使用clion调试ffmpeg

作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音

虽然 gdb 轻量快捷,但毕竟它是一款命令行工具,如果想观察变量,内存,要敲很多命令,这样会打消新人的学习积极性。命令行是远没有 clion 的界面直观的。

clion 支持众多调试器,可以自定义使用哪款调试器的,例如 LLDB、WinDbg、GDB 等等。

默认情况,clion 就是调用 gdb 来实现界面化调试的,因为 gdb 本身是有API接口提供给外部使用的,所以界面化这个事情做起来会轻松一些。

如果想用 clion 调试 ffmpeg,需要先按照《Linux下编译FFmpeg》一文编译出来 ffmpeg,这个很重要的。因为只有执行完 configure,FFmpeg-n4.4.1 文件夹的 Makefile 项目才完整,也就是 ffbuild 目录下的 config.mak。必须要有这个文件,Makefile 的规则才完整

然后才能把 Makefile 导入给 clion,然后 clion 才能分析 FFmpeg 项目里面的代码,函数之间的关联,才能在clion里使用各种高级功能,例如 Find Usages。


由于 clion 调试 ffmpeg 有点复杂,所以我在 B 站录了一个更加详细的 clion 调试视频。

视频地址:https://www.bilibili.com/video/BV1PV4y1Q7vo

喜欢看文字的读者可以继续阅读。

1,让 clion 加载 Makefile 项目

现在我们只需要用 clion 打开 FFmpeg-n4.4.1 文件夹,通常他会弹出一个窗口提示 Clean Project,如下:

1-1

我们需要点击 OK,这个 Clean Project 的效果其实就跟在命令行里执行 make clean 一样。所以 clion 会删掉你之前编译出来的 ffmpeg_g 等文件。

不过没关系,clion 执行完 Clean Project 之后,就会加载 Makefile 项目,我们等它加载完,然后再执行一次 make 命令就能重新编译出来 ffmpeg_g 了。

clion 在加载 Makefile,分析代码的时候,会在底部有 Update Symbol 相关的提示,这个过程会很快。

2,设置 clion 调试配置

当 clion 加载完 Makefile 之后,我们就能在右上角看到很多的 Configurations,如下:

1-2

这些 Configurations 其实就是 Makefile1 里面的 target,我们选择 all 这个 target 来设置调试命令与参数,如下:

1-3

3,点击小蟑螂开始调试

我们现在只需要打开 ffmpeg.c 代码文件,在 main 函数里打个断点,然后点击 clion 界面上的右上角的小蟑螂就可以开启调试了。效果如下:

1-3-2

其他的 ffplay 跟 ffprobe 也可以使用这种方法来调试,只需要修改一下 Configurations 的配置就行。


下面介绍一个我经常在 clion 里使用的功能,就是内存断点。前面说过 clion 是基于 gdb 实现的调试界面,所以打不过的 gdb 命令其实都可以在 clion 里面使用。

我们只需要切换到 gdb 的命令窗口,就能输入 gdb 的命令,如下:

watch *0x7fffffffde30

1-4

0x7fffffffde30 是变量 i 的内存地址,我监控这个地址,只要 i 的值发生变化,程序会停下来。这样我可以很方便找到哪行代码修改了 i 的内存数据,其他变量也可以用这个方式来监控。

这就是为什么这个调试方法会被叫做内存断点的原因。


1. Makefile 教程可以看陈皓的《跟我一起写Makefile》

版权所属 xianwanzhiyin.net 罗上文 2024 all right reserved,powered by Gitbook该文件修订时间: 2024-02-16 20:17:07

results matching ""

    No results matching ""