Ответ 1
От man gdb (1):
-x file
Execute GDB commands from file file.
Затем вы можете поместить свои контрольные точки в файл:
break [file:]function
break [file:]function
...
У меня есть список точек останова, которые я хочу добавлять каждый раз, когда отлаживаю определенную программу.
Есть ли способ, которым я могу поместить всю информацию о точке останова в файл и использовать ее в начале каждого сеанса отладки? Другими словами, могу ли я предоставить файл сценария с информацией о точке останова в GDB, прежде чем дать команду 'run'?
От man gdb (1):
-x file
Execute GDB commands from file file.
Затем вы можете поместить свои контрольные точки в файл:
break [file:]function
break [file:]function
...
Вы можете поместить все команды в файл .gdbinit
, который живет в том же каталоге, что и исполняемый файл, который вы отлаживаете.
Что-то вроде:
b somefile.c:128
b otherfile.c:33
Должно работать нормально.
Изменить: Да, аргумент командной строки -x
позволит вам выполнять произвольные файлы при запуске GDB, но сохранение файла .gdbinit
для каждого проекта означает, что файл выполняется автоматически ( без необходимости указывать имя файла). Кроме того, вы можете легко добавить конкретный проект .gdbinit
к исходному элементу управления, что означает, что все члены вашей команды могут использовать те же средства отладки.
Кроме использования внешнего файла, вы также можете просто открыть gdb open: если двоичный файл под gdb изменится, он перезагрузит двоичные файлы и библиотеки, не теряя ваши контрольные точки при следующем запуске.
Команда save breakpoints является новой по состоянию на gdb 7.2. После того, как вы сохранили точки останова в файле, вы можете прочитать их в более позднем сеансе gdb с помощью команды source, а затем при следующем запуске gdb вы можете использовать опцию -x <filename>
.
save breakpoints <filename>
Save all current breakpoint definitions to a file suitable for use
in a later debugging session. To read the saved breakpoint
definitions, use the `source' command.
Или используйте:
gdb --command=commands.gdb ./a.out
где commands.gdb
- текстовый файл с вашими точками останова.
--command
, вероятно, такой же, как -x
Документация GDB утверждает, что можно использовать команду "сохранить точки останова" и "источник": http://sourceware.org/gdb/current/onlinedocs/gdb/Save-Breakpoints.html#Save-Breakpoints. Однако это не работает на моем gdb (7.1-ubuntu).