Обычно используемый подход заключается в использовании фиктивной функции с неочевидным именем. Затем вы можете увеличить свой .gdbinit или использовать любую другую технику, чтобы всегда использовать это имя символа.
Тривиальная фиктивная функция:
void my_dummy_breakpoint_loc(void) {}
Проверяемый код (может быть макросом типа assert):
if (rare_condition)
my_dummy_breakpoint_loc();
сеанс GDB (очевидно, а?):
b my_dummy_breakpoint_loc
Важно убедиться, что "my_dummy_breakpoint_loc" не оптимизирован компилятором, чтобы этот метод работал.
В самых причудливых случаях фактическая инструкция на ассемблере, которая вызывает my_dummy_breakpoint_loc, может быть заменена на «nops» и включена на сайте для каждого сайта путем небольшого изменения кода во время выполнения. Этот метод используется инструментарием разработки ядра Linux, чтобы назвать один пример.