У меня возникли проблемы с переходом в GDB. Я создал пример программы из библиотеки ffmpeg с включенными и удаленными символами отладки. Хотя я настроил библиотеку ffmpeg на статическую и явно отключил общий доступ, похоже, что программа, которую я отлаживаю, компонуется динамически, поскольку размер ее файла составляет всего 99 КБ. Я не знаю, что это проблема, но подумал упомянуть об этом.
После того, как я установил и нажал точку останова в av_seek_frame, я использую команду «Далее», чтобы перейти. Однако это входит в первую функцию в 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
? - person Nikolai Fetissov   schedule 18.05.2010show step-mode
— я не использую emacs, поэтому не уверен, какие у него настройки по умолчанию. - person Nikolai Fetissov   schedule 18.05.2010