Tenho uma função que é chamada um grande número de vezes e, eventualmente, segfaults.
No entanto, não quero definir um ponto de interrupção nesta função e parar a cada vez que ela for chamada, porque estarei aqui por anos.
Ouvi dizer que posso definir um counter
no GDB para um ponto de interrupção e, cada vez que o ponto de interrupção é atingido, o contador diminui e só é acionado quando counter
= 0.
Isso é preciso e, em caso afirmativo, como faço isso? Forneça o código gdb para definir esse ponto de interrupção.
gdb
breakpoints
Tony Stark
fonte
fonte
Respostas:
Leia a seção 5.1.6 do manual do GDB. O que você precisa fazer é primeiro definir um ponto de interrupção e, em seguida, definir uma 'contagem de ignorar' para esse número de ponto de interrupção, por exemplo
ignore 23 1000
.Se você não souber quantas vezes ignorar o ponto de interrupção e não quiser contar manualmente, o seguinte pode ajudar:
fonte
continue <n>
Este é um método conveniente que ignora os
n - 1
tempos do último ponto de interrupção de acerto (e, portanto, para no n-ésimo acerto):main.c
Uso:
Sessão GDB:
fonte