Neste artigo falarei de backtrace. O que é? Como usar? Pra que serve? Também explorei um pouco mais sobre breakpoints e alguns comandos para controlar o fluxo do programa em execução. Tudo isso no nosso depurador favorito, o GNU Debugger.
Vamos iniciar definindo dois breakpoints. Um na linha 7 e outro na 9:
(gdb) b 7
Breakpoint 1 at 0x80483ca: file teste.c, line 7.
(gdb) b 9
Breakpoint 2 at 0x80483e4: file teste.c, line 9.
No artigo anterior terminamos falando do comando "next" e esquecemos de falar do "continue", que faz com que o programa retome seu curso normal de execução. Assim, se encontrar algum breakpoint ele irá parar normalmente.
(gdb) run
Starting program: /home/rlucca/C/t/a.out
Breakpoint 1, bla () at teste.c:7
7 scanf(" %d", &x);
(gdb) c
Continuing.
1
Breakpoint 2, bla () at teste.c:9
9 printf("X = %d\n", x);
(gdb) c
Continuing.
X = 51
Program exited with code 07.
Outro comando muito utilizado é o "finish". Ele retoma o curso normal de execução até o fim da função. Vejamos o que acontece!
(gdb) run
Starting program: /home/rlucca/C/t/a.out
Breakpoint 1, bla () at teste.c:7
7 scanf(" %d", &x);
(gdb) c
Continuing.
2
Breakpoint 2, bla () at teste.c:9
9 printf("X = %d\n", x);
(gdb) finish
Run till exit from #0 bla () at teste.c:9
X = 52
main () at teste.c:15
15 }
(gdb)
Isso ocorre porque na nossa linha 15 está localizado a chave que encerra a nossa função. Útil não? :D
[3] Comentário enviado por jllucca em 24/09/2004 - 13:23h
Aew, 'brigado pelos elogios y2h4ck e engos!
Sobre o "winheight" tava falando com o y2h4ck que em algumas maquinas que utilizo não achei ele(gdb 5.4). Deve ser porcausa das versões desatualizadas... Verifica se voce está com a versão 6.1.1, pois foi nessa que fiz o artigo :)
[5] Comentário enviado por macroney em 27/09/2004 - 14:40h
parabéns !
muito bom !!!
embora nem li tudo .......
mas vale ...
pô !, alguém conhece algum livro ou tem alguma apostila sobre Assembly , encontrei um em pt_BR , é novo, mas é muito superficial... eu acho ( embora nem programo em assembly) , Pois peguei uma apostila e me parece boa...
[6] Comentário enviado por wildtux em 16/01/2014 - 11:39h
Sei que o tópico é antigo. Mas mesmo assim parabéns pela iniciativa, está me ajudando muito a tirar algumas dúvidas, uso linux e gosto de usar também o cygwin.
Dica1: Pra quem ainda não se aventurou em Assembly, existem vários sites que ensinam sobre alguma coisa. Existem também alguns livros do autor Jon Erickson é só dar uma pesquisada.
Dica2: Pra quem quer debugar arquivos .exe no cygwin é só seguir o mesmo procedimento trocando o a.out pelo a.exe gerado no cygwin full.
Abraço ao jllucca, valeu cara! =D. Viva a comunidade, viva ao Linux!!!