使用gdb调试ffmpeg

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

gdb 是一款非常流行的调试工具,在 Linux 上使用非常广泛。但 gdb 也可以在 Windows 或者其他操作系统上使用。

1,启动 gdb 调试器

用 gdb 调试 ffmpeg 是非常简单的,只需要执行下面的命令就能进入调试了。

gdb ffmpeg_g

1-1

这时候 ffmpeg 进程其实是还没启动的,所以我们用 backtrace 命令会显示 No Stack(没有堆栈)。

2,设置 ffmpeg 命令的参数

ffmpeg_g 命令其实是支持很多参数,下面是一个简单的把 flv 转成 mp4 的命令。

ffmpeg -i juren.flv juren.mp4

我们可以在 gdb 的窗口状态下,用 set args 命令设置 -i juren.flv juren.mp4 这些参数给 ffmpeg 的进程,如下:

1-2

3,设置 main 符号断点

在让 ffmpeg 进程开始运行之前,我们可以提前设置一下断点,方便观察代码逻辑,例如 main 函数。

(gdb) break main
Breakpoint 1 at 0x13dbe0: file fftools/ffmpeg.c, line 4967
4,让ffmpeg进程跑起来

现在我们只需要执行 run 命令,就能让 ffmpeg 进程运行起来了,如下:

(gdb) run
Starting program: /home/loken/Documents/FFmpeg-n4.4.1/ffmpeg_g -i juren.flv juren.mp4 
[Thread debugging using libthread_db enabled]
...省略控制台日志...

现在就能看到 ffmpeg 进程已经在 main 函数的入口停了下来,下面介绍 gdb 的一个小技巧。

1,调出gdb源代码窗口

我们调试的时候通常需要看源代码的,gdb 调出来源代码的窗口命令是 layout src,效果如下:

(gdb) layout src

1-3

关于 gdb 的其他调试命令,例如 bt、continue、next、step 等等,读者可以网上搜索 gdb 常用命令 这个关键词,会找到很多相关的教程的。

别人已经写得不错的内容,我通常不想再写一遍。

关于 gdb 调试器的书,我有一本是非常推荐的,那就是 Richard Stallman, Roland Pesch, Stan Shebs 等人写的《Debugging with gdb》

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

results matching ""

    No results matching ""