Відповіді:
info locals
- Переглянути всі локальні змінні; list - джерело перегляду; rbreak - перерва на функцію, що відповідає регулярному вираженню.
set print object on
для поліморфних елементів і set print elements 0
це дві команди, які я використовую дуже часто. Досить корисна.
t a a bt
(значення thread apply all backtrace
). Може використовуватися з (майже) всіма іншими командами. Особливо корисно с bt full
.
Запустіть gdb за допомогою текстового інтерфейсу користувача
gdb -tui
Починаючи з 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.
Замість запуску GDB з параметом "-tui" ви також можете через деякий час перейти в текстовий режим, ввівши "wh".
Ctrl-a a
? Це жарт? Більше схожий tmux
/ screen
команди. І не працює для мене. Він повинен бути один з , як в документації : C-x C-a
, C-x a
, C-x A
.
C-x a
. Ви також можете перемикати перегляди в режимі tui C-x 1
і C-x 2
в режимі tui, щоб побачити також збірку (за потреби).
Наприклад, макроси, визначені в stl-views.gdb
Використання -command=<file with gdb commands>
опції під час запуску gdb. Те саме, що -x <command file>
. Цей командний файл може містити команди gdb, такі як точки перерви, параметри тощо. Корисний у випадку, якщо певний виконуваний файл повинен бути поставлений через послідовні запуски налагодження за допомогою gdb.
-iex
опцією для додавання окремих команд у командному рядку gdb.
scripting gdb - це хороший трюк, окрім того, що мені подобається встановлювати / вимикати встановлення планувальника, щоб запобігти запуску інших потоків, коли ви переходите в одну.
set scheduler-locking on
всередині gdb
інформаційні потоки, щоб перелічити всі активні потоки, і f (#) -> # номер потоку, на який потрібно перейти
колись я використовую gdb для перетворення з шістнадцяткової у десяткову чи двійкову, що дуже зручно замість того, щоб відкривати калькулятор
Замість того, щоб запускати gdb з опцією -tui, щоб побачити дочірній процес, який містить екран, який підкреслює, де виконується рядок коду у вашій програмі, переходьте та вимкніть цю функцію за допомогою Cx o та Cx a. Це корисно, якщо ви використовуєте цю функцію, а якщо її тимчасово не використовувати, щоб ви могли скористатися стрілкою вгору, щоб отримати попередню команду.
focus cmd
так, щоб стрілки вгору / вниз працювали. Ви перемикаєтесь назад, використовуючи focus src
.
Щоб налагодити STL, додайте вміст у .gdbinit, дотримуйтесь цих інструкцій: