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.
Agora nós vamos conhecer um pouquinho mais sobre os breakpoints. Primeiro de tudo, vamos aprender como vimos os breakpoints definidos atualmente. A exibição desse tipo de informação é feita através do comando "info" que tem como objetivo mostrar informações genéricas. Se quiser conhecê-lo a fundo utilize a ajuda online do gdb. Agora, como visualizamos os breakpoints atuais? Simples!
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x080483ca in bla at teste.c:7
breakpoint already hit 1 time
2 breakpoint keep y 0x080483e4 in bla at teste.c:9
breakpoint already hit 1 time
Do mesmo modo, podemos abreviar o comando sem problemas!
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x080483ca in bla at teste.c:7
breakpoint already hit 1 time
2 breakpoint keep y 0x080483e4 in bla at teste.c:9
breakpoint already hit 1 time
Agora, como faríamos para apagar um desses breakpoints? Para isso utilizamos o comando "delete" seguido do numero do breakpoint (que obtemos via "info b"). Assim, vamos remover o breakpoint da linha 9.
(gdb) del 2
Novamente estou mostrando como o gdb é poderoso, permitindo que se não acha outro comando com nome parecido possa haver a abreviação do nome. Assim, ao invés de escrever "delete" podemos escrever "del" ou até mesmo "d".
Vejamos um exemplo para remover todos os breakpoints de uma só vez.
(gdb) d
Delete all breakpoints? (y or n) y
(gdb) info breakpoints
No breakpoints or watchpoints.
No artigo anterior você aprendeu a utilizar o comando "break" com o número da linha informado com o comando "list". Mas fora essa opção também podemos utilizá-lo com o nome de uma função. Assim:
(gdb) b bla
Breakpoint 3 at 0x80483ca: file teste.c, line 7.
Essa linha "Breakpoint 3 at 0x80483ca: file teste.c, line 7." nos informa que o breakpoint foi bem sucedido. Mas não só isso. Nela é dita que foi criado o "breakpoint" de número 3, na linha 7 do arquivo "teste.c". Muito útil, não acham???
[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!!!