web-dev-qa-db-fra.com

Comment entrer, passer et sortir avec GDB?

J'ai tapé help pendant que j'étais dans la GDB mais je n'ai rien trouvé sur les étapes d'entrée, de transition et de sortie. J'ai mis un point d'arrêt dans un programme d'assemblage dans _start (break _start). Ensuite, j'ai tapé next et il a terminé le débogage. Je suppose que c'est parce qu'il a fini _start et n'a pas entrer comme je le voulais.

Quelqu'un qui peut vous aider?

50
Pichi Wuana

help running fournit quelques conseils:

Il y a step et next instuctions (et aussi nexti et stepi).

(gdb) help next
Step program, proceeding through subroutine calls.
Usage: next [N]
Unlike "step", if the current source line calls a subroutine,
this command does not enter the subroutine, but instead steps over
the call, in effect treating it as a single source line.

Nous pouvons donc voir que step étapes dans les sous-programmes , mais next passera sur sous-programmes.

Les step et stepi (et les next et nexti) se distinguent par des incréments de "ligne" ou "instruction".

step -- Step program until it reaches a different source line
stepi -- Step one instruction exactly

finish est lié:

(gdb) help finish
Execute until selected stack frame returns.
Usage: finish
Upon return, the value returned is printed and put in the value history.

Des informations beaucoup plus utiles sont disponibles sur https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html

46
Stephen Harris

Je suis venu ici parce que j'avais la même question. J'ai finalement pensé que pour mon but à chaque fois que je pouvais utiliser quelque chose comme "sortir" d'une boucle, je pouvais simplement définir un autre point d'arrêt après la boucle, puis laisser le programme continue terminer la boucle et exécuter le point d'arrêt après. Désolé si cela est évident pour la plupart des gens, mais c'est probablement utile pour quelqu'un qui cherche une réponse à cette question.

0
fjahr

Utilisez la commande "terminer"; cela fait parfois la même chose que "sortir". Il terminera ce que fait la pile (une fonction, généralement) et passera à la ligne suivante après cela. Recherchez la commande pour plus d'informations.

0
Nunuv Yurbizness