> 文档中心 > FFmpeg,Fplay,clion调试环境搭建

FFmpeg,Fplay,clion调试环境搭建

本系列 以 ffmpeg4.4 源码为准。本文主要讲解如何搭建 ffplay 的CLion调试环境。 ffmpeg 在 Linux 环境下更好调试。


本文系统是 Ubuntu 18,首先下载 FFmpeg-n4.4.1.zip ,虽然 FFmpeg 是通过 makefile 编译的,但是还是可以用 Clion 来调试,比 gdb 更直观一些。CLion 目前的最新版本比较完善,早几年我用的时候,调试好像必须提供 CMakeList 文件,现在只有 makefile 文件也能用 Clion 调试了。

操作步奏如下:

# 安装以下软件。apt-get install diffutils make pkg-config yasmapt-get install libsdl2-2.0apt-get install libsdl2-dev# 先执行 configure./configure \--prefix=/home/ubuntu/ffmpeg/build64/ffmepg-4.4-ubuntu \--enable-gpl \--enable-nonfree \--enable-debug=3 \--disable-optimizations \--disable-asm \--disable-stripping

这里有三个重点要注意:

1,要编译出 ffplay 可执行文件,必须安装 sdl2 库

2,上面的 configure 不要开启动态库,静态库调试会方便很多。ffmpeg 4.4 你不加 --enable-shared 就是使用静态库编译。configure 的规则是静态库动态库只能二选一。

3,后面有好几个选项是开启 debug 模式,告诉编译器不要优化代码,因为有时候优化代码,C程序的跳转看起来很奇怪。


现在打开 Clion,打开 FFmpeg 源码目录,再点击 Load Makefile Project 按钮。如下图

稍等片刻,Clion 就能加载完成,就会出现 很多 makefile 的 target 可以选择,如下图:

之前的文章《ffmpeg-makefile编译分析》,讲过,makefile 的默认 target 是 all ,所以选择 all 就能编译出 ffplay 可执行文件。

makefile 可以有很多 target 的,也可以单独编译某个target。如果只需使用某个模块的动态库,就可以单独编译这个模块的target。


点击 上面的 Edit Configurations ,配置一些东西,如下图:

注意 Clion 的 Load Makefile Project 自动加的 是 Makefile Application,不是 Makefile target。所以需要你自己用命令行编译出 ffplay 可执行文件。使用 make -j 16 命令编译,即可产生 ffplay 可执行文件。然后把 ffplay 的路径填到 Clion的 Executable 那里就行了。

现在 在 ffplay.c 文件的 main() 入口打一个断点,如下图:

从上图可以看到,断点成功了,step into 跳进去 avformat_open_input() 等内部函数也可以顺利看到数据,如下图:

这样,使用Clion 大大降低了新人调试 理解 ffplay 逻辑的难度。再提一点,刚刚 make 编译出 ffpaly 的同时,可执行文件 ffmpeg 也编译出来了,所以同理,ffmpeg 也能这样断点调试。


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,或者希望交流音视频技术的,可以加我微信 Loken1。


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习