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
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
.
gdb
con le impostazioni predefinite, Ctrl-C non chiude lapplicazione, si limita a entrare nel debugger, dove puoi decidere cosa fare. Utilizzacont
per " ingoia " il segnale e lapplicazione continua indisturbata. Oppure utilizzasignal 2
per passare SIGINT (2) allapplicazione. Oppure utilizzakill
per terminare lapplicazione.