使用clion远程调试ffmpeg
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
前文《gdb远程调试ffmpeg》已经演示了 gdb 如何调试 SRS,但是 gdb 是命令行,调试起来不太方面,本文就来讲解一些 clion 如何调试 SRS。
注意:clion 也是调的 gdb 来调试的,只是 clion 用了 gdb 的接口做了很多可视化的功能。
首先你还是需要有两台 Linux 电脑,电脑 A 运行 SRS 服务,电脑B 启动 clion 来进行远程调试。
我的电脑 A 是 Ubuntu 22.04.4 版本,我的电脑 B 也是 Ubuntu 22.04.4 版本。
但是我这里没有使用交叉编译,因为我两台电脑的CPU架构都是一样的。我是直接在电脑 B 编译出来 ffmpeg 的所有二进制文件,然后把整个 FFmpeg-n4.4.1 文件夹传输到电脑 A,因为电脑 A 不需要实际运行 ffmpeg 进程,他只需要有 ffmpeg 的源代码 与 调试符号 就行,而这些东西全部都在 FFmpeg-n4.4.1 文件夹里面。

在电脑 B ,我们需要通过 gdbserver 来启动 ffmpeg 进程,命令如下:
cd ~/Documents/FFmpeg-n4.4.1
gdbserver 192.168.0.108:1239 ./ffmpeg_g

gdbserver 命令启动之后,电脑 B 就会启动一个 TCP 服务,监听在 1239 端口,等待 电脑 A 来连接。这时候 ffmpeg 进程已经启动了,但是还没有进入 main 函数,被 gdb 在 main 的前面设置了断点。
现在,我们可以在电脑 A 用 clion 打开 FFmpeg-n4.4.1 文件夹。
由于 clion 加载项目,解析 Makefile 的时候会执行 make clean 目录,所以当 clion 加载完 Makefile.txt 之后,你需要从 电脑B 再传输一次 FFmpeg-n4.4.1 文件夹到 电脑 A。
然后我们创建一个 Remote Debug,然后点击开始调试即可。如下:

配置好调试参数之后,我们需要再 main() 函数里面打一个断点,成功启动调试之后,电脑 A 的 clion 界面如下:
