GDB Schritt über-Funktion (next) scheint nicht zu funktionieren
Ich versuche zu Debuggen, ein Programm schrieb ich in C++. Hier ist der code:
void a() { }
void b() { a(); }
int main() { b(); return 0; }
Ich es kompiliert mit: g++ -g3 -O0 -o cards.exe cards.cpp
.
Ist hier die Ausgabe von meinem GDB-Sitzung:
(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)
Warum senden Sie folgenden Befehl, um den GDB immer noch den Schritt in eine Funktion?
Bin ich mit g++ 4.2.1-sjlj-und GDB-6.8.
- Haben Sie versucht, etwas komplexer?
- Eigentlich ja, ich habe versucht, geloopt Aufrufe ein(). Immer noch nicht funktionieren. Ich habe auch versucht, das deaktivieren inlining mit __attribute__((noinline)) aber ohne Erfolg. Ich habe versucht diese auf meinem Hackintosh und es funktionierte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
step
undnext
Befehle, die eine source-Zeile zu einem Zeitpunkt, also wenn alles auf einer Zeile ein einzelnesnext
hat mich gleich an das Ende dermain()
.Mit der code formatiert ist weniger dicht, die ich noch nicht sehen, die Ergebnisse, die Sie sehen. Lege ich die Funktion Anrufe auf separaten Linien zu erhalten, gdb, Schritt über Sie ein zu einer Zeit. Hier ist, was bekomme ich dann:
Ich habe darauf keine Antwort, aber ich wollte nur zu teilen, dass der gdb verhält sich wie erwartet auf meinem iMac. In jedem Fall gdb behandelt den Aufruf
b()
als eine Anweisung und nie in den Aufruf der Funktion.help next
undhelp step
sagen, dass auf deiner Maschine?'n' ist die
next
Anweisung und treten nicht in die Funktion.Für Schritt in die Funktion 's'. Das ist
step
.n
MACHT Schritt in die Funktion. das ist das problem der OP ist die Adressierung.