Questo è in qualche modo correlato a gdb set overwrite logging dovrebbe sovrascrivere gdb.txt corretto? .

Diciamo che sto eseguendo una sessione di qualche applicazione. Ad esempio, lasciatemi prendere di nuovo lesempio di qbittorrent.

Come condiviso in precedenza, questo è il modo in cui avviene unesecuzione –

$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run 

un modo che so è uscire dallapplicazione con grazia ma a volte lapplicazione si blocca / impiega troppo tempo o semplicemente non risponde.

Quindi lunica opzione che mi rimane è usare CTRL+C che, se ho capito correttamente, elimina lapplicazione sottostante , nel nostro esempio qbittorrent e poi sono in grado di uscire da gdb mediante

(gdb) quit 

Ci sarebbe / ci sarebbe un altro modo per chiudere lapplicazione e lasciare che il La sessione gdb continua a funzionare o lunico modo è il modo rozzo che ho menzionato sopra.

So che uccidere un processo di domanda dovrebbe essere lultima soluzione e non la prima.

Commenti

  • Quando si esegue sotto gdb con le impostazioni predefinite, Ctrl-C non chiude lapplicazione, si limita a entrare nel debugger, dove puoi decidere cosa fare. Utilizza cont per " ingoia " il segnale e lapplicazione continua indisturbata. Oppure utilizza signal 2 per passare SIGINT (2) allapplicazione. Oppure utilizza kill per terminare lapplicazione.

Rispondi

Puoi usare segnali per questo. Prima di avviare il programma, imposta USR1 o USR2 per interrompere gdb senza influire sul programma:

handle SIGUSR1 nopass 

Quindi puoi eseguire il tuo programma e quando devi fermarlo, esegui kill -USR1 da unaltra shell con il pid (figlio) appropriato. gdb metterà in pausa lapplicazione, quindi potrai aggiungere punti di interruzione, esaminare lo stato e così via e, se lo desideri, continuare lesecuzione con cont.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *