Во-первых, вам не нужно перезапускать программу для ее отладки.
Вы должны перестроить ее, используя точно те же источники и флаги, которые вы использовали изначально и добавить -g
.Это даст вам исполняемый файл, который содержит отладочную информацию, но в остальном он (почти) идентичен исходному двоичному файлу.Выходные данные nm a.out
и nm a.out.debug
должны быть очень близки (некоторые незначительные различия, вероятно, будут присутствовать, но, вероятно, не повлияют на отладку).Теперь запустите gdb a.out.debug <pid>
, и вы сможете выполнять отладку на уровне исходного кода и настроить свой порог.
Если это не удастся, вы все равно можете делать то, что хотите, но это будет сложнее: у вас будетсделать это на уровне сборки.Вы можете запустить a.out.debug
(запустить новую задачу) и посмотреть в выводе GDB disas
, как параметры передаются в вашу подпрограмму и как осуществляется доступ к порогу.Затем вы можете вернуться к исходному исполняемому файлу и наблюдать, по существу, то же самое, что происходит там.Как только вы узнаете, где в памяти находится порог, вы сможете настроить его в GDB.