gdb Schritt nicht wie erwartet funktionieren

Ich bin debugging statische multi-threaded-x86-64-C++ - Anwendung auf Linux.

Ich kann breakpoints setzen auf Funktionen und Anschlag auf Sie, und ich kann Schritt für Schritt über die Funktion Körper. Aber wenn ich versuche, ein Schritt in eine andere Funktion, gdb nicht Stoppt am Anfang und es scheint, dass es nur die Ausführung fortgesetzt. Wenn ich unterbreche Ausführung des Programms, gdb geht um defekte Stand und unbrauchbar:

(gdb) bt
Target is executing.
(gdb) c
Continuing.
Cannot execute this command while the selected thread is running.
(gdb) 

Als workaround kann ich verwenden stepi mehrmals statt step, stepi funktioniert wie erwartet.
Was könnte der Grund sein für dieses Verhalten? Gibt es irgendwelche workarounds neben der Verwendung stepi?
Ich bin mit gdb 7.6 und gcc 4.7.1.

  • Haben Sie zusammengestellt, das Ziel mit -ggdb und -O0? Haben Sie versucht, die Beobachtung den Unterschied zwischen Schritt (s) und next (n)?
  • mein Ziel ist kompiliert mit -g und -O0. Wie kann ich beachten Sie den Unterschied zwischen s und n?
  • Versuchen Sie es von -g zu -ggdb. Um den Unterschied zu sehen, Schritt für Schritt durch die Eingabe s (effektiv "step in") versus n (effektiv "step over") in gdb.
  • n funktioniert wie erwartet, habe ich geschrieben, dass "ich kann gehen Schritt für Schritt über die Funktion "Körper", aber s ("step in") nicht, das ist der Unterschied, falls es das ist was du meinst.
  • Sie müssen veröffentlichen Sie Ihren code. Gibt es irgendwelche thread-Aufrufe?
InformationsquelleAutor ks1322 | 2013-06-03
Schreibe einen Kommentar