gdbне требует написания полного имени команды; указание rдостаточно для run, n— для next, s— для step. Более того, для повторения наиболее часто употребляемой команды, нужно просто нажать клавишу . Таким образом, пошаговое выполнение программы становится проще.
Ниже предложен небольшой набор полезных команд gdb; gdbвключает полное онлайновое руководство в формате GNU info (запустите info gdb), в котором детально объясняются все опции gdb. В [19] содержится неплохое подробное руководство по работе с gdb. gdbтакже поддерживает оперативную справку, ссылки на которую можно найти внутри gdb; доступ к справочным файлам можно получить, введя команду help. Можно также получить справку по каждой определенной команде, набрав help команда или help тема .
Подобно командам оболочки, команды gdbмогут принимать аргументы. "Вызвать helpс аргументом команда " означает то же самое, что и "набрать help команда ".
Некоторые команды gdbтакже принимают идентификаторы формата для спецификации вывода значений. Идентификаторы формата располагаются за именем команды и отделяются от него косой чертой. После выбора формата необходимость использовать его каждый раз при повторе команды отпадает; gdbзапоминает выбранный формат и использует его по умолчанию.
Идентификаторы формата отделены от команд символом /и состоят из трех элементов: цифра, буква формата и буква, отражающая размер. Цифра и буква размера не обязательны; по умолчанию в качестве цифры устанавливается 1, а размер получает подходящее значение по умолчанию, основанное на букве формата.
Буквы формата следующие: одля обозначения восьмеричного числа, xдля шестнадцатеричного числа, dдля десятичного числа, и для беззнакового десятичного числа, tдля двоичных данных, fдля числа с плавающей запятой, а для адреса, iдля инструкций, с для символа, sдля строки.
Символы, отображающие размер, таковы: b— байт, h— полуслово (2 байта), w— слово (4 байта), g — слово-гигант (8 байт).
attach, at
Подключает отладчик к уже запущенному процессу. Единственным аргументом является идентификатор процесса (pid), к которому осуществляется подключение. Процессы, с которыми установлено подключение, останавливаются, прерывая любые ожидающие или текущие системные вызовы, которые разрешено прерывать. См. detach.
backtrace, bt, where, w
Выводит трассировку стека.
break, b
Устанавливает точку прерывания. Можно указать имя функции, номер строки текущего файла (файл, содержащий выполняемый в данный момент код), пару имя_файла:номер_строкиили даже произвольный адрес с помощью * адрес .gdbназначает и выводит уникальный номер для каждой точки прерывания. См. condition, clearи delete.
clear
Удаляет точку прерывания. Принимает такой же аргумент, как break. См. delete.
condition
Изменяет точку прерывания, определенную номером (см. break), для прерывания, только если выражение истинно. Допускаются произвольные выражения.
(gdb) b664
Breakpoint 3 at 0х804а5с0: file ladsh4.c, line664.
(gdb) condition 3 status==0
delete
Удаляет точку прерывания, определенную номером.
detach
Отключается от текущего подключенного процесса.
display
Отображает значение выражения каждый раз при остановке выполнения. Принимает такие же аргументы (включая модификаторы формата), как print. Выводит номер отображения, которое впоследствии может использоваться для отмены отображения. См. undisplay.
Help
Вызывает справку. При вызове без аргумента предоставляет краткое описание доступной справочной информации. При вызове с другой командой в качестве аргумента выводит справку по этой команде. Доступны перекрестные ссылки.
jump
Переходит на произвольный адрес и продолжает выполнение процесса с этой точки. Адрес — единственный аргумент; его можно определить в форме номера строки или адреса, указанного как *адрес.
list, l
Выданная без аргументов listсначала выводит 10 строк, расположенных возле текущего адреса. Последующие вызовы list выводят последующие 10 строк. При использовании аргумента -выводит предыдущие 10 строк. При указании номера строки выводит 10 строк, окружающих эту строку. При указании пары имя_файла:номер_строкивыводит 10 строк, окружающих заданную. При указании имени функции выводит 10 строк возле начала функции. При указании адреса в виде *адресвыводит 10 строк, окружающих код, находящийся по этому адресу. При указании двух строк, разграниченных запятыми, выводит все строки между заданными.
Читать дальше