2012-12-18 10 views
22

Ich möchte einige Haltepunkte in einem gdb-Skript vordefinieren und einige spezielle Befehle an diesen Haltepunkten aufrufen und anschließend die Programmausführung automatisch fortsetzen. Also, im Idealfall würde Ich mag einen gdb Skript, wie folgt aus:gdb scripting: Ausführen von Befehlen am ausgewählten Haltepunkt

b someFunction 
... 
if breakpoint from above reached do: 
    print var1 
    call someOtherFunction 
    continue 
done 

Zusätzlich ist eine bedauerliche Tatsache ist, dass ich nicht auf der Python-Schnittstelle für die Verwendung von Breakpoints, als GDB Version auf die verlassen kann Server, an dem ich gerade arbeite, ist zu alt!

+0

mögliche Duplikate von [Do spezifische Aktion, wenn bestimmte Haltepunkttreffer in gdb] (http://stackoverflow.com/questions/6517423/do-spezifische-action-when-certain-breakpoint-hits-in-gdb) –

Antwort

30

Sie sollten sich den Befehl command ansehen, mit dem Sie gdb-Befehle hinzufügen können, wenn ein Haltepunkt getroffen wird. Siehe den Abschnitt breakpoint command list des gdb-Handbuchs.

Zum Beispiel:

break someFunction 
commands 
print var1 
end 

Willen, wenn der Haltepunkt auf someFunction getroffen wird, automatisch print var1.

+8

Danke Du, das war der Schlüssel! Eine kleine zusätzliche Bemerkung: Wenn Sie umfangreiche Ausgaben haben, indem Sie einen solchen Befehl verwenden und nicht jedes Mal gestoppt werden sollen, wenn er den unteren Rand des Terminals erreicht (denn dann fragt gdb nach "Typ um fortzufahren, oder q um zu beenden") Geben Sie einfach in gdb oder in Ihrem Skript "Paginierung deaktivieren" an. –

+0

Beachten Sie, dass dies nicht im nicht interaktiven Modus (z. B. --batch oder MI-Modus) funktioniert, bis https://sourceware.org/bugzilla/show_bug.cgi?id=10079 fest ist – pixelbeat

+1

Wenn ich sage, dass ich die gleichen Befehle ausführen soll für mehrere Haltepunkte, wie geht das? (ohne Kopieren einfügen;) –