Wie kann ich "sehen" GDB?
Habe ich versucht zu beobachten, die änderung der "int a" durch den Befehl "beobachten ein". Jedoch, das Programm nicht zu stoppen, wenn es änderungen an 12. Warum?
/* FILE: test.c */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv){
printf("Hello world\n");
int a = 12;
a = 10;
return 0;
}
- Hast du das kompilieren mit debug-Informationen (- g) und sind Sie sicher, dass Sie die debug-version?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es kann helfen, geben Sie Ihre Plattform, version des GDB, und die genaue Reihenfolge der GDB-Befehle, die Sie verwendet.
Hier ist, was ich sehe (GDB scheint zu funktionieren nur fine):
Wenn Sie wollen, um das Debuggen eines Programms sollte man immer bauen mit -O0 -g3 (ich nehme, dass Sie gcc verwenden, wenn Sie nicht Ihre compiler wird wahrscheinlich unterstützen Sie andere Fahnen unten zu drehen, Optimierung und aktivieren Sie debug-Informationen).
Auf meinem system (x86_64 läuft Gentoo GNU/Linux) ich bin nicht in der Lage zu bekommen, an der "int a = 12' Zeile, wenn ich mit jedem Optimierung von größer oder gleich -O, da der compiler dann bewerben Sie sich dead code elimination. (Entnommen aus hier, es ist die -fdce-flag in der -O-Bereich)
Immer Bedenken Sie dies, wenn Sie Debuggen! Überprüfen Sie Ihren code, indem Sie entweder der Demontage es mit objdump -D oder Sag deinem compiler, um zu zeigen Sie die generierte assembly (auf gcc mit dem -S flag)
Den compiler ist wahrscheinlich auch nicht der code-Generierung zu weisen 12 ("a"), wäre es eine gute Idee, zu zerlegen, den generierten code zu bestätigen. Sie müssen wahrscheinlich etwas komplexer test, um zu versuchen, diese out.