list
команды печатает набор строк, но мне нужна одна строка, где я есть и где, вероятно, произошла ошибка.
Gdb: как распечатать текущую строку или найти текущий номер строки?
Ответ 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), который показывает ваше местоположение и функцию в отдельном окне, что очень полезно для пользователей. Надеюсь, это тоже поможет.