Digitei help
enquanto estava no GDB, mas não encontrei nada sobre entrar, sair e sair. Coloquei um ponto de interrupção em um programa de montagem em _start
( break _start
). Depois digitei next
e finalizei a depuração. Eu acho que foi porque terminou _start
e não entrou como eu queria.
Alguém que possa ajudar?
debugging
programming
gdb
Pichi Wuana
fonte
fonte
Respostas:
help running
fornece algumas dicas:Existem
step
enext
instuções (e tambémnexti
estepi
).Portanto, podemos ver que essas
step
etapas entram nas sub - rotinas, masnext
passarão pelas sub - rotinas.O
step
estepi
(e onext
enexti
) são diferenciados por incrementos de "linha" ou "instrução".Relacionado é
finish
:Informações muito mais úteis estão em https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
fonte
for(i=0;i<10;i++) { printf("%d\n",i); }
é uma linha de origem, mas várias instruções.finish
comando concluirá o quadro de pilha atual, que normalmente concluirá a sub-rotina atual e retornará ao chamador.Eu vim aqui porque tinha a mesma pergunta. Acabei descobrindo que, para meu propósito, a qualquer momento, poderia usar algo como "saída" de um loop, apenas posso definir outro ponto de interrupção após o loop e deixar o programa
continue
terminar o loop e executar o ponto de interrupção posteriormente. Desculpe se isso é óbvio para a maioria das pessoas, mas provavelmente é útil para quem procura uma resposta para esta pergunta.fonte