Подтвердить что ты не робот

Gdb: как распечатать текущую строку или найти текущий номер строки?

list команды печатает набор строк, но мне нужна одна строка, где я есть и где, вероятно, произошла ошибка.

4b9b3361

Ответ 1

Во время отладки я получаю ту же информацию. Хотя нет, пока я проверяю стек. Скорее всего, вы бы использовали флаг оптимизации, я думаю. Проверьте ссылку - что-то связанное.

Попробуйте выполнить компиляцию с помощью -g3 удалить любой флаг оптимизации. Тогда это может сработать. НТН!

Ответ 2

Команда 'frame' даст вам то, что вы ищете. (Это может быть сокращено только "f" ). Вот пример:

(gdb) frame
\#0  zmq::xsub_t::xrecv (this=0x617180, msg_=0x7ffff00008e0) at xsub.cpp:139
139         int rc = fq.recv (msg_);
(gdb)

Без аргумента "frame" просто сообщает вам, где вы находитесь (с аргументом он меняет фрейм). Более подробную информацию о команде фрейма можно найти здесь.

Ответ 3

Имейте в виду, что gdb - это мощная команда -capable инструкций низкого уровня, поэтому привязана к концепциям сборки.

То, что вы ищете, называется указателем инструкции, то есть:

Регистр указателя инструкций указывает на адрес памяти, который последует после выполнения процессором. Указатель инструкции называется ip в 16-разрядном режиме, eip в 32-битном режиме и rip в 64-битном режиме. p >

подробнее здесь

все регистры, доступные при выполнении gdb, могут быть показаны с помощью:

(gdb) info registers

с ней вы можете найти, в каком режиме ваша программа работает (смотря, какой из этих регистров существует)

тогда (здесь, используя наиболее часто используемый регистр rip, замените eip или очень редко ip при необходимости):

(gdb)info line *$rip

покажет вам номер строки и источник файла

(gdb) list *$rip

покажет вам эту строку с несколькими до и после

но, вероятно,

(gdb) frame

должно быть достаточно во многих случаях.

Ответ 4

Можно использовать команду , где или фрейм. где команда даст больше информации с именем функции

Ответ 5

Все ответы выше верны. Я предпочитаю использовать режим tui (ctrl + XA), который показывает ваше местоположение и функцию в отдельном окне, что очень полезно для пользователей. Надеюсь, это тоже поможет.