Ich möchte, dass GDB einen Haltepunkt setzt, wenn eine Variable einem von mir festgelegten Wert entspricht. Ich habe dieses Beispiel ausprobiert:
#include <stdio.h>
main()
{
int i = 0;
for(i=0;i<7;++i)
printf("%d\n", i);
return 0;
}
Ausgabe von GDB:
(gdb) break if ((int)i == 5)
No default breakpoint address now.
(gdb) run
Starting program: /home/SIFE/run
0
1
2
3
4
5
6
Program exited normally.
(gdb)
Wie Sie sehen, hat GDB keinen Haltepunkt gesetzt. Ist dies mit GDB möglich?
(gdb) watch i No symbol "i" in current context.
i
vorhanden ist. Versuchen Siebreak main
,run
,c
,s
(Schritt sicherstellen , dass Sie über die Erklärung bekommen), und dann die Befehle auf die Antwort. Stellen Sie sicher, dass Sie Ihr Programm mit dem-g
Flag kompilieren . (dh mit Debug-Informationen)Zunächst müssen Sie Ihren Code mit den entsprechenden Flags kompilieren, um das Debuggen in Code zu ermöglichen.
Führen Sie dann einfach Ihren Code mit Ihrem bevorzugten Debugger aus
Zeig mir den Code.
brechen Sie in Zeile 5 und schauen Sie, ob i == 5.
Haltepunkte überprüfen
Programm ausführen
quelle
Es gibt Hardware- und Software-Überwachungspunkte. Sie dienen zum Lesen und Schreiben einer Variablen. Sie müssen ein Tutorial konsultieren:
http://www.unknownroad.com/rtfm/gdbtut/gdbwatch.html
Um einen Überwachungspunkt festzulegen, müssen Sie zuerst den Code an einer Stelle aufteilen, an der das varianle i in der Umgebung vorhanden ist, und den Überwachungspunkt festlegen.
watch
Mit dem Befehl wird ein Watchpoit zum Schreiben,rwatch
zum Lesen undawatch
zum Lesen / Schreiben festgelegt.quelle