Escribí help
mientras estaba en el GDB pero no encontré nada sobre entrar, salir y salir. Puse un punto de interrupción en un programa de Asamblea en _start
( break _start
). Luego escribí next
y terminó la depuración. Supongo que fue porque terminó _start
y no intervino como quería.
¿Alguien que pueda ayudar?
debugging
programming
gdb
Pichi Wuana
fuente
fuente
Respuestas:
help running
proporciona algunas pistas:Hay
step
enext
instrucciones (y tambiénnexti
ystepi
).Así podemos ver que los
step
pasos a subrutinas, peronext
a un paso más de subrutinas.El
step
ystepi
(y elnext
ynexti
) se distinguen por incrementos de "línea" o "instrucción".Relacionado es
finish
:Hay mucha más información útil en https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
fuente
for(i=0;i<10;i++) { printf("%d\n",i); }
es una línea de origen pero múltiples instrucciones.finish
comando completará el marco de la pila actual, que normalmente completará la subrutina actual y volverá a la persona que llama.Vine aquí porque tenía la misma pregunta. Eventualmente, pensé que para mi propósito, en cualquier momento en que pudiera usar algo como "salir" de un bucle, simplemente puedo establecer otro punto de interrupción después del bucle y luego dejar que el programa
continue
termine el bucle y luego se ejecute en el punto de interrupción. Lo siento si eso es obvio para la mayoría de las personas, pero probablemente sea útil para alguien que busque una respuesta a esta pregunta.fuente