Вы можете изменять способы взаимодействия GDB с вами, используя
команду set
. Для команд, управляющих способами отображения
данных GDB, смотрите раздел 8.7 Параметры вывода.
Другие установки описаны здесь.
GDB демонстрирует свою готовность считать команду выводя строку,
называемую приглашением. Обычно это `(gdb)'. Вы
можете изменить строку приглашения командой set prompt
.
Например, при отладке GDB с помощью GDB, полезно
изменить приглашение в одном из сеансов так, чтобы вы всегда могли
понять, с каким из них вы общаетесь.
Замечание: set prompt
не добавляет пробелы после установленного
вами приглашения. Это позволяет устанавливать приглашение,
заканчивающееся пробелом или нет.
set prompt новое-пригл
show prompt
GDB читает входные команды через интерфейс readline. Эта
библиотека GNU обеспечивает единообразное поведение для программ,
которые предоставляют пользователю интерфейс командной строки.
Преимуществами являются стили редактирования командной строки GNU
Emacs или vi, csh
-подобная подстановка истории
и сохранение и повторное использование истории команд между сеансами отладки.
Вы можете управлять поведением редактирования командной строки в
GDB командой set
.
set editing
set editing on
set editing off
show editing
GDB может отслеживать команды, которые вы вводите во время сеансов отладки, чтобы вы могли точно знать, что происходило. Используйте следующие команды для управления возможностями истории команд GDB.
set history filename имя-файла
GDBHISTFILE
или, если эта переменная не установлена, `./.gdb_history'
(`./_gdb_history' в MS-DOS).
set history save
set history save on
set history filename
. По умолчанию, эта возможность
отключена.
set history save off
set history size размер
HISTSIZE
или приравнивается 256, если эта переменная не установлена.
Раскрывание истории назначает специальное значение знаку !.
Так как ! является также оператором логического отрицания в Си,
раскрывание истории по умолчанию отключено. Если вы решите включить
раскрывание истории командой set history expansion on
, вы должны
будете снабдить ! (когда он используется как логическое отрицание в
выражении) последующим пробелом или символом табуляции, чтобы предохранить
его от раскрывания. Средства истории Readline не делают попытки подстановки
на строках != и !(, даже когда раскрывание истории включено.
Вот команды управления раскрыванием истории:
set history expansion on
set history expansion
set history expansion off
vi
, могут почитать ее.
show history
show history filename
show history save
show history size
show history expansion
show history
показывает все четыре состояния.
show commands
show commands n
show commands +
Определенные команды GDB могут выводить большое количество информации на экран. Чтобы помочь вам всю ее прочитать, GDB приостанавливает вывод и запрашивает ввод в конце каждой страницы вывода. Нажмите RET, когда вы хотите продолжить вывод, или q для уничтожения оставшегося вывода. Также, установка ширины экрана определяет, когда переносить строки вывода. В зависимости от того, что выводится, GDB пытается разбить строку в удобочитаемом месте, вместо того чтобы просто продолжить ее на следующую строчку.
Обычно GDB узнает размер экрана из программы драйвера
терминала. Например, в Unix GDB использует базу данных
termcap, вместе со значением переменной среды TERM
и
установками stty rows
и stty cols
. Если это неправильно,
вы можете заменить эти установки командами set height
и
set width
:
set height lpp
show height
set width cpl
show width
set
определяют высоту экрана в lpp строк и ширину
в cpl знаков. Соответствующие команды show
отображают
текущие установки.
Если вы определите высоту в ноль строк, GDB не будет
останавливаться при выводе, независимо от того, насколько он длинный.
Это полезно, если вывод осуществляется в файл или буфер редактора.
Аналогично, вы можете определить `set width 0', чтобы запретить
GDB переносить строки вывода.
Вы всегда можете вводить в GDB числа в восьмеричной,
десятичной или шестнадцатеричной системе в соответствии c обычными
соглашениями: восьмеричные числа начинаются с `0', десятичные числа
оканчиваются на `.', а шестнадцатеричные числа начинаются с
`0x'. Числа, которые не начинаются ни c одного из этих знаков, по
умолчанию считаются десятичными; аналогично, отображение чисел по
умолчанию -- если не определен никакой конкретный формат -- осуществляется
по основанию 10. Командой set radix
вы можете изменять
основание, устанавливаемое по умолчанию для ввода и вывода.
set input-radix основание
set radix 012 set radix 10. set radix 0xaустанавливает десятичное основание. С другой стороны, `set radix 10' оставляет основание системы счисления без изменений независимо от того, каким оно было.
set output-radix основание
show input-radix
show output-radix
По умолчанию, GDB ничего не сообщает о своей внутренней
деятельности. Если вы работаете на медленной машине, то вы можете захотеть
использовать команду set verbose
. Она велит GDB
сообщать вам, когда он выполняет длинную внутреннюю операцию, чтобы вы
не думали, что он завис.
В настоящее время set verbose
управляет только
сообщениями о чтении таблиц символов исходного файла; смотрите
раздел 12.1 Команды для задания файлов, описание symbol-file
.
set verbose on
set verbose off
show verbose
set verbose
в on
или off
.
По умолчанию, если GDB сталкивается с ошибками в таблице символов объектного файла, он не сообщает об этом; но если вы отлаживаете компилятор, эта информация может вам пригодиться (см. раздел 12.2 Ошибки чтения файлов с символами).
set complaints предел
show complaints
По умолчанию GDB осмотрителен и задает, как иногда кажется, множество глупых вопросов, чтобы подтвердить некоторые команды. Например, если вы пытаетесь выполнить программу, которая уже выполняется:
(gdb) run The program being debugged has been started already. Start it from the beginning? (y or n)
Если вы неуклонно желаете сами разбираться с последствиями ваших собственных команд, вы можете отключить эту "возможность":
set confirm off
set confirm on
show confirm
set debug arch
show debug arch
set debug event
show debug event
set debug expression
show debug expression
set debug overload
show debug overload
set debug remote
show debug remote
set debug serial
show debug serial
set debug target
show debug target
set debug varobj
show debug varobj