2009-12-16 10 views
7

Ich habe eine Reihe von grundlegenden Haltepunkten in einem benutzerdefinierten Fn setup in meiner .gdbinit definiert. Also, jedes Mal, wenn ich gdb starte, muss ich das fn ausführen. um alle meine brkpoints zu setzen, bevor ich mit dem Debuggen beginne. Kann ich meine .gdbinit so konfigurieren, dass bei jedem Start zuerst meine benutzerdefinierte Fn setup ausgeführt wird?Wie kann gdb bei jedem Start eine benutzerdefinierte Funktion ausführen (definiert in .gdbinit)?

Antwort

9

nennen Sie es einfach durch Funktionsname:

Mein .gdbinit:

define setup  
    echo Foobar\n 
end 

setup #This is the function call 

Und wenn ich es laufen:

$ gdb 
GNU gdb Fedora (6.8-37.el5) 
Copyright (C) 2008 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "x86_64-redhat-linux-gnu". 
Foobar 
(gdb) 
+0

Nichts für mich arbeiten - gibt diesen Fehler: .No Symboltabelle wird geladen. Verwenden Sie den Befehl "Datei". Keine Symboltabelle geladen. Verwenden Sie den Befehl "Datei". Keine Symboltabelle geladen. Verwenden Sie den Befehl "Datei". Keine Symboltabelle geladen. Verwenden Sie den Befehl "Datei". /home/sbowmick/.gdbinit:83: Fehler in der Quellbefehlsdatei: Keine ausführbare Datei angegeben. Verwenden Sie den Befehl "file" oder "exec-file". Verwendung der Bibliothek libthread_db "/lib/tls/libthread_db.so.1". Ich verwende GNU gdb Red Hat Linux (6.3.0.0-1.138.el3rh) – TCSGrad

+0

Meine .gdbinit Datei sieht wie folgt aus: definieren Setup br fn1 br fn2 Ende definieren some_other_fn ... Ende setup – TCSGrad

+0

Dies ist, weil Sie nicht die Binärdatei geladen haben, wenn Sie Breakpoints definieren, muss die Binärdatei bereits beim Start GDB geladen werden, z Sie müssen "file a.out" oder "smtg" in Ihrer .gdbinit definieren, bevor Sie die Breakpoints setzen oder "gdb a.out" ausführen. – Kimvais

Verwandte Themen