我在GDB中遇到了一些麻烦。我已经在ffmpeg库中构建了一个示例程序,其中带有调试符号并剥离。尽管我将ffmpeg库配置为static并显式禁用共享,但它看起来像我正在调试的程序是动态链接的,因为它的文件大小仅为99kB。我不知道这是问题,但想到提及它。在Emacs GDB中逐步完成
在我设置并在av_seek_frame中创建断点后,我使用'next'命令来逐步完成。但是,这将进入av_seek_frame()中的第一个函数,如下所示。此外,如果第二个“下一个”做了,那么回溯失去了跟踪它的位置。我错了吗?我怎样才能跨过?我应该注意到我仔细检查了那一步设置模式关'关闭作为默认的(因为我相信这将在第一段代码没有调试信息打破。)
Breakpoint 1, av_seek_frame (s=0x16429000, stream_index=0, timestamp=29727438, flags=0) at l
(gdb) list
1648
1649 return 0;
1650 }
1651
1652 int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags
1653 {
1654 int ret;
1655 AVStream *st;
1656
1657 ff_read_frame_flush(s);
(gdb) next
ff_read_frame_flush (s=0x16429000) at libavformat/utils.c:1248
(gdb) list
1243
1244 /**
1245 * Flush the frame reader.
1246 **/
1247 void ff_read_frame_flush(AVFormatContext *s)
1248 {
1249 AVStream *st;
1250 int i, j;
1251
1252 flush_packet_queue(s);
(gdb) next
ff_read_frame_flush (s=0x16429000) at libavformat/utils.c:1252
(gdb) where
#0 ff_read_frame_flush (s=0x16429000) at libavformat/utils.c:1252
#1 0x00000000 in ??()
你是用'-fomit-frame-pointer'构建的吗? – 2010-05-18 19:06:57
我不这么认为,但它可能是因为我在基于unix风格配置的构建中不太舒服。我的配置选项(构建ffmpeg库和我正在调试的ffplay示例是:) ./configure --enable-libmp3lame --enable-static --enable-pthreads --enable -ffplay --disable-shared - - 禁用 - 优化 - 禁用 - mmx - 禁用 - 剥离 - 启用 - 调试 – 2010-05-18 19:08:37
尝试检查'show step-mode' - 我不使用emacs,所以不确定它的默认值是什么。 – 2010-05-18 19:19:47