Как посмотреть, какая строка кода «next» будет выполняться в GDB? - PullRequest
2 голосов
/ 24 июля 2011

При отладке некоторого кода в gdb я хочу посмотреть, какая строка будет выполнена, если я скажу next или step.

  • Конечно, я могу сказать l, но если я скажу l пару раз (и не помню, сколько раз), то l не напечатает строку, которая будет выполнена.
  • Я также могу прокрутить назад до последней остановки gdb и посмотреть, в какой строке это было, но иногда это связано с копкой выходных данных.

Мне интересно, если я пропускаю простую команду в gdb, которая показывает текущую строку, в которой остановлен отладчик?

Ответы [ 4 ]

2 голосов
/ 24 июля 2011

Вы можете использовать

список * $ eip

или более короткая форма

l * $ eip

Это заставит GDB печатать строки источника рядом со счетчиком текущей программы.

1 голос
/ 25 июля 2011

Чтобы увидеть текущую строку, на которой остановился отладчик, вы можете использовать команду farme без аргументов. Это достигает того же эффекта, что и команда update. Работает как в tui, так и в режиме командной строки.

1 голос
/ 24 июля 2011

Можно сказать l +0;текущая строка будет первой в списке.

Команда l +offset выводит код, начинающийся с offset строк текущей строки.

Обратите внимание, что если вы уже использовалиlist команда, текущая строка будет изменена, то есть она больше не будет следующей исполняющей строкой.Так что это будет работать только для вашей первой команды list.

0 голосов
/ 24 июля 2011

Звучит так, будто вы хотите запустить GDB в Emacs (который покажет вам текущий файл и отметит текущую строку), в DDD или в режиме tui.

...