我在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