Контрольные точки GDB

У меня есть список точек останова, которые я хочу добавлять каждый раз, когда отлаживаю определенную программу.

Есть ли способ, которым я могу поместить всю информацию о точке останова в файл и использовать ее в начале каждого сеанса отладки? Другими словами, могу ли я предоставить файл сценария с информацией о точке останова в GDB, прежде чем дать команду 'run'?

Ответ 1

От man gdb (1):

  -x file
           Execute GDB commands from file file.

Затем вы можете поместить свои контрольные точки в файл:

break [file:]function
break [file:]function
...

Ответ 2

Вы можете поместить все команды в файл .gdbinit, который живет в том же каталоге, что и исполняемый файл, который вы отлаживаете.

Что-то вроде:

b somefile.c:128
b otherfile.c:33

Должно работать нормально.

Изменить: Да, аргумент командной строки -x позволит вам выполнять произвольные файлы при запуске GDB, но сохранение файла .gdbinit для каждого проекта означает, что файл выполняется автоматически ( без необходимости указывать имя файла). Кроме того, вы можете легко добавить конкретный проект .gdbinit к исходному элементу управления, что означает, что все члены вашей команды могут использовать те же средства отладки.

Ответ 3

Кроме использования внешнего файла, вы также можете просто открыть gdb open: если двоичный файл под gdb изменится, он перезагрузит двоичные файлы и библиотеки, не теряя ваши контрольные точки при следующем запуске.

Ответ 4

Команда 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.

Ответ 5

Или используйте:

gdb --command=commands.gdb ./a.out

где commands.gdb - текстовый файл с вашими точками останова.

--command, вероятно, такой же, как -x