2010-11-28 17 views
17

sto debug di un programma che utilizza gdb. Ogni volta che mi manca un breakpoint o decido di aggiungere un altro watchpoint, devo uccidere il processo e rieseguirlo. Per attaccare il gdb esistente ad esso, io uso attach <pid>. Tuttavia, devo scoprire il pid del nuovo processo.Come posso eseguire comandi esterni dal prompt dei comandi gdb?

Il modo in cui lo faccio oggi è sospendere gdb, ottenere il pid con ps -C <program_name> e quindi tornare a gdb per collegarlo ad esso.

C'è un modo per eseguire un comando Unix dal prompt dei comandi gdb senza uscire alla shell, in modo che potessi fare qualcosa di simile da dentro gdb:

attach `ps -C <program_name>` 

sto lavorando su linux.

risposta

18

(gdb) aiuto guscio
Eseguire il resto linea come un comando di shell. Senza argomenti , esegui una shell inferiore.

Al termine, è possibile utilizzare "esci" per tornare a gdb.

9
gdb$ shell 

shell$ execute_your_commands 

shell$ exit 

gdb$ you_have_returned_back_to_gdb_prompt 
4

Si può semplicemente utilizzare shell seguito dal comando che si desidera eseguire, ad es .:

gdb$ shell g++ tsort.c -o tsort 

Questa è solo una forma breve della risposta precedente.

+0

In questa modalità, gdb non sembra in grado di rilevare o essere in grado di segnalare problemi quando è presente il dump principale. – Derek

1

Solo per espandere la risposta accettata, la scelta rapida per shell è !.

(gdb) help!

Eseguire il resto della linea come comando shell. Senza argomenti, esegue una shell inferiore.

Problemi correlati