GDB étape sur la fonction(suivant) ne semble pas fonctionner
Je suis en train de déboguer un programme que j'ai écrit en C++. Voici le code:
void a() { }
void b() { a(); }
int main() { b(); return 0; }
J'ai compilé à l'aide de: g++ -g3 -O0 -o cards.exe cards.cpp
.
Voici le résultat de ma session gdb:
(gdb) b main
Breakpoint 1 at 0x401421: file cards.cpp, line 10.
(gdb) r
Starting program: C:\workspace\Cards\src/cards.exe
[New thread 1624.0xa28]
Breakpoint 1, main () at cards.cpp:10
10 int main()
(gdb) n
12 b();
(gdb) n
b () at cards.cpp:5 5
void b()
(gdb) n
7 a();
(gdb) quit
The program is running. Exit anyway? (y or n)
Ma question est, pourquoi est-ce qu'envoyer une prochaine commande gdb encore l'étape dans une fonction? J'utilise g++ 4.2.1-sjlj et gdb 6.8.
Avez-vous essayé quelque chose de plus complexe?
En fait oui, j'ai essayé de faire en boucle les invocations à un(). Ne fonctionne toujours pas. J'ai aussi essayé de désactiver inline avec __attribute__((noinline)) mais en vain. J'ai essayé sur mon Hackintosh et cela a fonctionné.
En fait oui, j'ai essayé de faire en boucle les invocations à un(). Ne fonctionne toujours pas. J'ai aussi essayé de désactiver inline avec __attribute__((noinline)) mais en vain. J'ai essayé sur mon Hackintosh et cela a fonctionné.
OriginalL'auteur No Ordinary Love | 2010-09-17
Vous devez vous connecter pour publier un commentaire.
La
step
etnext
commandes de travaux, une ligne de source à un moment, quand tout est sur une seule ligne, un seulnext
me prend à droite à la fin demain()
.Avec le code formaté moins densément je ne vois toujours pas les résultats que vous voyez. J'ai mis la fonction des appels sur des lignes distinctes pour obtenir gdb à l'étape au-dessus d'eux un à la fois. Voici ce que j'obtiens alors:
Je n'ai pas de réponse, mais je voulais juste partager gdb se comporte comme prévu sur mon iMac. Dans les deux cas gdb traités de l'appel à
b()
comme une instruction et n'est jamais entré dans l'appel de fonction.Ce n'
help next
ethelp step
dire sur votre machine?(gdb) aider à la prochaine Étape du programme, de procéder par sous-programme d'appels. Comme à l'étape "de la commande" tant que sous-programme d'appels ne se produisent pas; quand ils le font, l'appel est traité comme une seule instruction. Argument N signifie ce faire N fois (ou jusqu'à ce que le programme s'arrête pour une autre raison). (gdb) aider l'étape de l'Étape de programme jusqu'à ce qu'il arrive à une autre ligne de source. Argument N signifie ce faire N fois (ou jusqu'à ce que le programme s'arrête pour une autre raison).
réglage de l'symboles de débogage format de LAMES semble résoudre le problème.
OriginalL'auteur John Kugelman
'n' est la prochaine instruction et n'aura pas d'étape dans la fonction.
Pour entrer dans la fonction, l'utilisation d'un "s". C'est l'étape.
n
NE étape dans la fonction. c'est le problème de l'OP.OriginalL'auteur Sashi