Вы можете сокращать команды GDB по нескольким первым символам имени команды, если это сокращение однозначно; и вы можете повторять определенные команды GDB простым нажатием RET. Вы также можете использовать клавишу TAB для того, чтобы GDB сам дополнил остаток слова в команде (или показал вам возможные альтернативы, если существует несколько вариантов).
Названия команд GDB всегда могут быть сокращены, если это сокращение однозначно. Другие возможные сокращения команд перечислены в документации по отдельным командам. В некоторых случаях, допускаются даже неоднозначные сокращения; напрмер, s специально определено как эквивалент step, даже если существуют другие команды, чьи названия начинаются на s. Вы можете проверить сокращения, задавая их как параметр для команды help.
Введенная пустая строка (просто нажатие RET), означает повтор предыдущей команды. Определенные команды (например, run) не повторяются таким способом; это те команды, непреднамеренное повторение которых может вызвать проблемы и которые вы вряд ли захотите повторять.
Команды list и x, при их повторе нажатием RET, вместо точного повтора создают новые параметры. Это позволяет легко просматривать исходный текст или память.
GDB может также использовать RET по-другому: для разделения длинного вывода, аналогично обычной утилите more (see section Размер экрана). Так как в такой ситуации легко нажать RET слишком много раз, GDB блокирует повтор после любой команды, генерирующей такой тип вывода.
Любой текст, расположенный от # до конца строки является комментарием; он ничего не делает. В основном, это полезно в командных файлах (see section Командные файлы).
Нажмите TAB в любой момент, когда захотите, чтобы GDB дополнил оставшуюся часть слова. Если существует только одна возможность, GDB дополняет слово и ждет, пока вы закончите команду (или нажмете RET, чтобы ввести ее). Например, если вы введете
(gdb) info bre <KBD>TAB</KBD>
(gdb) info breakpoints
Если при нажатии TAB существует несколько вариантов для следующего слова, GDB издает звук. Вы можете либо ввести больше символов и попробовать снова, либо нажать TAB второй раз; GDB выведет все возможные завершения для этого слова. Например, вы можете захотеть установить точку останова на подпрограмме, чье имя начинается с `make_', но когда вы вводите b make_TAB, GDB лишь издает звук. Повторное нажатие TAB отображает все имена функций в вашей программе, начинающиеся с этих символов. Например:
(gdb) b make_ <KBD>TAB</KBD> GDB издает звук; нажав <KBD>TAB</KBD> еще раз, видим: make_a_section_from_file make_environ make_abs_section make_function_type make_blockvector make_pointer_type make_cleanup make_reference_type make_command make_symbol_completion_list (gdb) b make_
Если вы сначала хотите только увидеть список альтернатив, вы можете нажать M-?, а не нажимать TAB дважды. M-? означает META ?. Вы можете ввести это либо удерживая клавишу, обозначенную на вашей клавиатуре как META (если такая есть), и нажать ?, или как ESC, за которой следует ?.
Иногда нужная вам строка, являясь логически "словом", может содержать скобки или другие символы, которые GDB обычно исключает из своего понятия о слове. Чтобы позволить завершению слов работать в такой ситуации, вы можете заключить слова в командах GDB в ' (знаки одинарных кавычек).
Наиболее вероятная ситуация, где вам это может потребоваться, это при вводе имени функции в Си++. Это происходит потому, что Си++ допускает перегрузку функций (множественные определения одной и той же функции, различающиеся типом параметров). Например, когда вы хотите установить точку останова, вам может потребоваться различать, имеете вы в виду версию name с параметром целого типа, name(int), или же версию с параметром вещественного типа, name(float). Для использования возможностей завершения слов в такой ситуации, введите одинарную кавычку ' в начале имени функции. Это предупреждает GDB, что ему может потребоваться принять во внимание больше информации, чем обычно, когда вы нажимаете TAB или M-? для запроса завершения слова:
(gdb) b 'bubble( <KBD>M-?</KBD> bubble(double,double) bubble(int,int) (gdb) b 'bubble(
(gdb) b bub <KBD>TAB</KBD> GDB изменяет вашу строку ввода на следующую, и издает звук: (gdb) b 'bubble(
Для большей информации о перегруженных функциях, смотрите section Выражения Си++. Вы можете использовать команду set overload-resolution off для отключения распознавания перегруженных символов; смотрите section Возможности GDB для Си++.
(gdb) help List of classes of commands: aliases -- Aliases of other commands breakpoints -- Making program stop at certain points data -- Examining data files -- Specifying and examining files internals -- Maintenance commands obscure -- Obscure features running -- Running the program stack -- Examining the stack status -- Status inquiries support -- Support facilities tracepoints -- Tracing of program execution without stopping the program user-defined -- User-defined commands Type "help" followed by a class name for a list of commands in that class. Type "help" followed by command name for full documentation. Command name abbreviations are allowed if unambiguous. (gdb)
(gdb) help status Status inquiries. List of commands: info -- Generic command for showing things about the program being debugged show -- Generic command for showing things about the debugger Type "help" followed by command name for full documentation. Command name abbreviations are allowed if unambiguous. (gdb)
apropos reload
set symbol-reloading -- Set dynamic symbol table reloading multiple times in one run show symbol-reloading -- Show dynamic symbol table reloading multiple times in one run
complete i
if
ignore
info
inspect
Это предназначено для использования GNU Emacs.
В дополнение к help, вы можете использовать команды GDB info и show для получения информации о состоянии вашей программы, или о состоянии самого GDB. Каждая команда поддерживает много тем запросов; это руководство описывает каждую тему в соответствующем месте. Списки в разделах info и show в Алфавитном указателе указывают на все подкоманды. See section Алфавитный указатель.
Для отображения всех устанавливаемых параметров и их текущих значений, вы можете использовать show без аргументов; также можно использовать info set. Обе команды приводят к одинаковому результату.
Вот три разнообразные подкоманды show, которые не имеют соответствующих set-команд: