2012-12-18 12 views
22

mi piacerebbe predefinire alcuni punti di interruzione in uno script gdb e per richiamare alcuni comandi speciali presso questi punti di interruzione e poi di continuare automaticamente l'esecuzione del programma. Così, idealmente, mi piacerebbe avere uno script gdb come il seguente:gdb scripting: eseguire comandi selezionato breakpoint

b someFunction 
... 
if breakpoint from above reached do: 
    print var1 
    call someOtherFunction 
    continue 
done 

Inoltre un fatto spiacevole è che io non posso contare su l'interfaccia di Python per l'utilizzo di punti di interruzione, come la versione gdb al il server al quale lavoro attualmente è troppo vecchio!

+0

possibile duplicato di [Esegui un'azione specifica quando determinati punti di interruzione colpiscono in gdb] (http://stackoverflow.com/questions/6517423/do-specific-action-when-certain-breakpoint-hits-in-gdb) –

risposta

30

Si dovrebbe dare un'occhiata al comando command, che consente di aggiungere comandi gdb quando viene raggiunto un punto di interruzione. Vedi la sezione breakpoint command list del manuale gdb.

Ad esempio:

break someFunction 
commands 
print var1 
end 

volontà, quando il punto di interruzione su someFunction viene colpito, automaticamente print var1.

+8

Grazie Tu, quella era la chiave! Una piccola osservazione aggiuntiva: Se hai un output esteso usando un tale comando e non vuoi che venga fermato ogni volta che raggiunge il fondo del terminale (perché allora gdb chiederà "Continuare a digitare , oppure q per uscire") , basta indicare "imposta la paginazione off" in gdb o nel tuo script. –

+0

Nota che questo non funziona in modalità non interattiva (--batch o modalità MI per esempio) finché https://sourceware.org/bugzilla/show_bug.cgi?id=10079 è corretto – pixelbeat

+1

Se si dice che eseguo gli stessi comandi wand per più punti di interruzione, quindi come farlo? (senza copia incolla;) –