Я согласен с Дейвом, что условная точка останова - путь.
Однако, чтобы сделать то, что вы просили, вы можете использовать команду GDB commands
, чтобы задать список команд GDB, которые будут выполняться при достижении точки останова. Я нахожу это невероятно полезным.
Я предлагаю записать ваши команды GDB в файл, чтобы их было легко редактировать и легко перезагружать с помощью команды source
. Или вы можете указать командные файлы для загрузки в командной строке GDB или использовать .gdbinit для их автоматической загрузки.
Пример правильного использования commands
:
Предположим, что у меня есть функция format
, которая вызывается многими другими функциями. Я хочу разбить его, но только после того, как была вызвана функция do_step_3
.
break do_step_3
commands
break format
continue
end
Вы можете использовать это для вашей проблемы с чем-то вроде:
break func
commands
watch var
continue
end