2014-07-07 29 views
7

Ich versuche, mehrere Befehle in einer einzigen Zeile, zWie mehrere Befehle in einer einzigen Zeile ausgeführt werden?

(gdb) info threads; c 
Args must be numbers or '$' variables. 

Aber es sieht aus wie GDB unterstützt nicht so laufen. Irgendwelche Ideen?

+0

mögliches Duplikat von [Mehrere Befehle in gdb getrennt durch eine Art Begrenzer ';'?] (Http://stackoverflow.com/questions/1262639/multiple-commands-in-gdb-separted-by-some-sort Trennzeichen – ks1322

Antwort

12

Verwenden define Befehl Ihren eigenen Befehl zu definieren:

(gdb) define mycommand 
Type commands for definition of "mycommand". 
End with a line saying just "end". 
>info threads 
>c 
>end 
(gdb) mycommand 

Ausführliche Informationen können Sie sich beziehen: https://sourceware.org/gdb/onlinedocs/gdb/Define.html#Define.

2

gdb hat keine Syntax dafür. Also, du kannst es nicht tun.

Wenn Sie in der Lage sein möchten, vorgefertigte Sequenzen auszuführen, lesen Sie den Befehl "define".

0

Sie können es erreichen, indem man zuerst die Haltepunkte setzen und verwenden Sie dann den "Befehl innerhalb GDB und erwähnen alle Befehle, die ausgeführt werden sollten, wenn diese besonderen Haltepunkte treffen. So können wir auch unsere Debug-Sitzung automatisieren können.

(gDB) Befehl help

Set ausgeführt werden Befehle, wenn ein Haltepunkt erreicht wird. geben Breakpoint-Nummer als Argument nach "Befehle". Ohne Argument ist der ausgewählte Haltepunkt der letzte Satz. Die Befehle selbst folgen ab der nächsten Zeile. Geben Sie eine Zeile ein, die "Ende" enthält, um das Ende von ihnen anzuzeigen. Geben Sie "silent" als erste Zeile ein, um den Breakpoint stumm zu machen. dann wird keine Ausgabe gedruckt, wenn es getroffen wird, außer was die Befehle drucken.

(gdb) break main 
Breakpoint 1 at 0x40113e: file thread.cpp, line 19. 
(gdb) info b 
Num  Type   Disp Enb Address   What 
1  breakpoint  keep y 0x000000000040113e in main() at thread.cpp:19 
(gdb) commands 1 
Type commands for breakpoint(s) 1, one per line. 
End with a line saying just "end". 
>info locals 
>print argc 
>print argv 
>backtrace 
>end 
(gdb) info b 
Num  Type   Disp Enb Address   What 
1  breakpoint  keep y 0x000000000040113e in main() at thread.cpp:19 
     info locals 
     print argc 
     print argv 
     backtrace 
(gdb) 
Verwandte Themen