Angenommen, ich starte eine gdb-Sitzung und einen Haltepunkt erstellen und ausführen.Ist es möglich, Hardware Watchpoint über Wiederholungen in derselben gdb Sitzung zu erhalten?
Nachdem ich abgebrochen habe, erstelle ich einen Watchpoint basierend auf der Speicheradresse eines Symbols in der aktuellen Ausführung und lösche den ursprünglichen Haltepunkt.
Einige Zeit später unterbreche ich das Programm mit Control-C
, immer noch in gdb, ich gebe den run
Befehl aus, um das Programm von Anfang an neu zu starten.
Allerdings möchte ich den Hardware-Watchpoint über den Neustart des Debug-Prozesses beibehalten.
Gibt es eine gdb-Einstellung, mit der ich Hardware-Watchpoints bei Wiederholungen beibehalten kann?
Update: Hier ist ein Beispiel, um das Problem zu reproduzieren.
int main(){
int NeverGoOutOfScope = 0;
NeverGoOutOfScope = 7;
while (1);
}
Hier sind die Reihenfolge der gdb
Befehle.
break 3
run
watch NeverGoOutOfScope
info watch
run
# After this point, the breakpoint remains but the watchpoint is gone.
info watch
Ist es möglich, den Watchpoint zu erhalten, ohne ihn neu erstellen zu müssen?
werden sie nicht standardmäßig beibehalten? –
Nein. Die Watchpoints verschwinden. Die Haltepunkte können beibehalten werden. – merlin2011
Ich bekomme die Warnung 'Fehler bei der Neueinstellung Haltepunkt NUMMER: Kein Symbol" Variablenname "im aktuellen Kontext", aber es lässt den Watchpoint in der Breakpoints-Liste: 'NUMMER hw watchpoint behalten y Variablenname 'und sein Wert wird gedruckt im nächsten Lauf ... –