Получение GDB для сохранения списка точек останова? - PullRequest
121 голосов
/ 01 февраля 2009

ОК, info break перечисляет точки останова, но не в формате, который бы хорошо подходил для повторного их использования с использованием --command , как в этом вопросе . Есть ли у GDB метод для их сброса в файл, приемлемый для ввода снова? Иногда в сеансе отладки необходимо перезапустить GDB после создания набора точек останова для тестирования.

Редактировать: Файл .gdbinit имеет ту же проблему, что и --command. Команда info break выводит не команды, а таблицу для потребления человеком.

Чтобы уточнить, вот пример из информационного перерыва:

(gdb) info break
Num Type           Disp Enb Address    What
1   breakpoint     keep y   0x08048517 <foo::bar(void)+7>

Ответы [ 12 ]

0 голосов
/ 01 июля 2010

Есть еще идеи? У меня есть

warning: Current output protocol does not support redirection

после

set logging on

EDIT:

Я знаю, что вопрос «как сохранить список точек останова», однако я просто обнаруживаю, что с помощью gdb мы можем просто установить точки сохранения «сохранено в файл» с помощью

gdb> source breakpoints.txt

где breakpoints.txt - это файл, подобный следующему:

break main.cpp:25
break engine.cpp:465
break wheel.cpp:57
0 голосов
/ 28 октября 2009

Проблема в том, что установка точки останова зависит от контекста. Что если у вас есть две статические функции с именем foo? Если ты уже отлаживает один из модулей, который определяет foo, то GDB будет предполагать, что вы имели в виду это. Но если вы просто свалите "разбить foo" на файл и затем прочитать этот файл при запуске, не ясно, какую функцию вы имеете в виду.

...