Можете ли вы опубликовать свои самые сложные и полезные команды во время запуска отладчика, такого как gdb или dbx.
Наиболее сложные/полезные команды для отладчика gdb
Ответ 1
- backtrace full: полная обратная трассировка с локальными переменными
- вверх, вниз, рамка: перемещение кадров
- watch: приостанавливать процесс, когда выполняется определенное условие.
- set print pretty on: распечатывает красиво отформатированный исходный код C
- установить вход в систему: сеанс отладки журнала для показа другим пользователям поддержки
- установить массив печати на: Довольно печать массива
- finish: продолжить до конца функции
- включить и отключить: включить/отключить контрольные точки
- tbreak: разбить один раз, а затем удалить точку останова
- где: Номер строки, выполняемый в настоящее время
- info locals: просмотреть все локальные переменные
- info args: просмотреть все аргументы функции
- список: просмотр источника
- rbreak: break on функция соответствие регулярное выражение
Ответ 2
Запустите gdb с текстовым пользовательским интерфейсом
gdb -tui
Ответ 3
Начиная с gdb 7.0, существует обратная отладка, поэтому ваши новые любимые команды:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
Ответ 4
Вместо запуска GDB с параметром "-tui" вы также можете переключиться в текстовый режим через некоторое время, набрав "wh".
Ответ 5
thread apply all bt
или thread apply all print $pc
: быстро узнать, что делают все потоки.
Ответ 6
Например, макросы, определенные в stl-views.gdb
Ответ 7
Использование опции -command=<file with gdb commands>
при запуске gdb. То же, что и -x <command file>
. Этот командный файл может содержать команды gdb, такие как точки останова, параметры и т.д. Полезно в случае, если конкретный исполняемый файл нужно выполнить через последовательные отладочные прогоны с использованием gdb.
Ответ 8
scripting gdb - хороший трюк, кроме того, что мне нравится установите блокировку планировщика вкл/выкл, чтобы предотвратить запуск других потоков при входе в один.
Ответ 9
Вместо запуска gdb с опцией -tui, чтобы увидеть дочерний процесс, который содержит экран, который выделяет, где исполняемая строка кода находится в вашей программе, входите и выходите из этой функции с помощью C-x o и C-x a. Это полезно, если вы используете эту функцию и что временно не используете ее, чтобы вы могли использовать стрелку вверх для получения предыдущей команды.
Ответ 10
- Использование .gdbinit(запуск файла, в котором вы можете писать макросы и звонить из gdb). Поместите .gdbinit в свой домашний каталог, чтобы он был загружен каждый раз, когда загружается gdb.
-
info нити, чтобы отобразить все активные потоки, и f (#) → # номер потока, который вы хотите переключить на
-
Иногда я использую gdb для преобразования из hex в десятичный или двоичный, его очень удобно, а не для открытия калькулятора
- p/d 0x10 → дает десятичный эквивалент 0x10
- p/t 0x10 → двоичный эквивалент 0x10
- p/x 256 → шестнадцатеричный эквивалент 256
Ответ 11
Это может быть полезно, я уверен, что его можно было бы улучшить, помогите приветствовать:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
Ответ 12
Чтобы отладить STL, добавьте контент в .gdbinit, следуйте этим инструкциям: