2014-07-07 14 views
7

Sto cercando di eseguire più comandi su una sola riga, per esempioCome eseguire più comandi in una singola riga?

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

ma sembra che gdb non supporta così. Qualche idea?

+0

possibile duplicato di [comandi multipli in gdb separati da una sorta di delimitatore ';'?] (Http://stackoverflow.com/questions/1262639/multiple-commands-in-gdb-separted-by-some-sort -of-delimitatore) – ks1322

risposta

12

comando Usa define per definire il proprio comando:

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

Per informazioni dettagliate, è possibile consultare: https://sourceware.org/gdb/onlinedocs/gdb/Define.html#Define.

2

gdb non ha una sintassi per questo. Quindi, non puoi farlo.

Se si desidera eseguire sequenze memorizzate, consultare il comando "define".

0

si può raggiungere in primo luogo mettendo i punti di interruzione e quindi utilizzare il "comando all'interno GDB e parlare di tutti i comandi che dovrebbero Viene eseguito quando questo particolare i punti di interruzione colpisce. In questo modo siamo in grado di automatizzare la nostra sessione di debug pure.

(gdb) guida dei comandi comandi

Set da eseguire quando un punto di interruzione viene colpito. Dare numero breakpoint come argomento dopo "comanda". Senza argomenti, il punto di interruzione target è l'ultimo set. I comandi stessi seguono a partire dalla riga successiva. Digitare una riga contenente "end" per indicare la fine di essi. Dare "silenzioso" come prima riga per rendere silenzioso il punto di interruzione; quindi nessun output viene stampato quando viene colpito, ad eccezione di ciò che i comandi stampano.

(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) 
Problemi correlati