Sto provando a eseguire il debug di un programma che ho scritto in C++. Ecco il codice:La funzione passo-passo di GDB (successiva) non sembra funzionare
void a() { }
void b() { a(); }
int main() { b(); return 0; }
L'ho compilato utilizzando: g++ -g3 -O0 -o cards.exe cards.cpp
. Qui è l'uscita della mia sessione di 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)
La mia domanda è, perché l'invio di un comando accanto al gdb ancora un passo in una funzione? Sto usando g ++ 4.2.1-sjlj e gdb 6.8.
Hai provato qualcosa di più complesso? – stefanB
In effetti sì, ho provato a fare invocazioni loop su a(). Ancora non funzionerà. Ho anche provato a disabilitare la funzione di inlining con __attribute __ ((noinline)) ma inutilmente. Ho provato questo sul mio Hackintosh e ha funzionato. –