У меня есть функция, которая вызвана некоторое большое количество раз, и в конечном счете segfaults.
Однако я не хочу устанавливать точку останова в этой функции и остановке после каждого раза, когда это называют, потому что я буду здесь в течение многих лет.
Я услышал, что могу установить a counter
в GDB для точки останова, и каждый раз, когда точка останова поражена, счетчик постепенно уменьшается и только инициирован когда counter
= 0.
Действительно ли это точно, и раз так как я делаю это? Дайте код gdb для установки такой точки останова.
Прочтите раздел 5.1.6 руководства GDB. Что вам нужно сделать, это сначала установить точку останова, а затем установить «счетчик игнорирования» для этого номера точки останова, например игнорировать 23 1000
.
Если вы не знаете, сколько раз игнорировать точку останова, и не хотите считать вручную, может помочь следующее:
ignore 23 1000000 # set ignore count very high.
run # the program will SIGSEGV before reaching the ignore count.
# Once it stops with SIGSEGV:
info break 23 # tells you how many times the breakpoint has been hit,
# which is exactly the count you want