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é.

OriginalL'auteur No Ordinary Love | 2010-09-17