2013-04-11 16 views
6

C'è un modo per grep sull'output del comando print in gdb? Nel mio caso, sto eseguendo il debug di un core dump usando gdb e l'oggetto che sto eseguendo il debug contiene molti elementi. Sto trovando difficile cercare un attributo corrispondente i.e:Come grep su gdb print

(gdb) print *this | grep <attribute> 

Grazie.

+1

Quindi si desidera questa patch: http://sourceware.org/ml/gdb-patches/2011-07/msg00572.html – cnicutar

+1

Il problema principale di questa sintassi è che il | il carattere è un operatore c valido. – matt

risposta

5

(gdb) stampa * questo | grep

Il modo "standard" per ottenere ciò è utilizzare Meta-X gdb in emacs.

Un'alternativa:

(gdb) set logging on 
(gdb) print *this 
(gdb) set logging off 
(gdb) shell grep attribute gdb.txt 

La patch fornita dal cnicutar sembra certo attraente rispetto a quanto sopra. Suppongo che la ragione per cui (o il suo equivalente) non è mai stata presentata è che la maggior parte dei manutentori di GDB usa emacs e quindi non ha questo problema in primo luogo.

+0

Grazie @Employed Russo –

+0

@ Motivo russo impiegato: http://sourceware.org/ml/gdb-patches/2011-07/msg00284.html – matt

+0

Di cosa stai parlando? Sto usando Emacs e ho appena provato 'print $ rax | grep 41', dice «Nessun simbolo" grep "». Se lo fai vuol dire che emacs ti permette di cercare, non è sicuramente il grep nativo. Il grep potrebbe essere usato in uno script, cioè per fare in modo che un watchpoint gdb non si fermi in una particolare funzione * (è quello che sto cercando di ottenere) *. –