Gosto de fazer o GDB definir um ponto de interrupção quando uma variável é igual a algum valor que defini, tentei este exemplo:
#include <stdio.h>
main()
{
int i = 0;
for(i=0;i<7;++i)
printf("%d\n", i);
return 0;
}
Saída do GDB:
(gdb) break if ((int)i == 5)
No default breakpoint address now.
(gdb) run
Starting program: /home/SIFE/run
0
1
2
3
4
5
6
Program exited normally.
(gdb)
Como você vê, o GDB não fez nenhum ponto de interrupção, isso é possível com o GDB?
(gdb) watch i No symbol "i" in current context.
i
existe. Tentebreak main
,run
,c
,s
(passo para se certificar de que você começa após a declaração) e, em seguida, os comandos na resposta. Certifique-se de compilar seu programa com o-g
sinalizador. (ou seja, com informações de depuração)Primeiro, você precisa compilar seu código com sinalizadores apropriados, permitindo a depuração no código.
em seguida, basta executar o código com o seu depurador favorito
mostre-me o código.
quebra nas linhas 5 e verifica se i == 5.
verificando pontos de interrupção
executando o programa
fonte
Existem watchpoints de hardware e software. Eles servem para ler e escrever uma variável. Você precisa consultar um tutorial:
http://www.unknownroad.com/rtfm/gdbtut/gdbwatch.html
Para definir um ponto de controle, primeiro você precisa quebrar o código em um lugar onde o varianle i está presente no ambiente e definir o ponto de controle.
watch
O comando é usado para definir um watchpoit para escrever, enquantorwatch
para ler eawatch
para ler / escrever.fonte