Domanda

ho un errore di segmentazione quando posso cancellare il mio programma. Sto usando gdb per il debug, il problema è che quando si preme Ctrl-C, mentre io sono il debug gdb non cancella il programma e fare ciò che si suppone per farlo è fermarlo.

Quello che voglio è fare i tasti Ctrl-C e non consentono gdb per fermarlo. C'è un modo per fare questo? Eventuali altre raccomandazioni per il debug? Non posso usare printf perché sinceramente non ho un'idea chiara dove il problema proviene.

È stato utile?

Soluzione

gdb sta intercettando il segnale. Quando si preme CTRL-C, si sta effettivamente causando il driver di terminale per generare un SIGINT.

Quello che dovete fare è avere GDB generare il SIGINT utilizzando il segnale di comando. la sintassi è

  
    

segnale num

  

e il segnale uomo vi dirà il numero di segnale (in questo caso, è il segnale SIGINT 2, in modo da signal 2 lo farà.)

Aggiornamento

Certo, basta, è possibile utilizzare il nome simbolico. info signal vi dirà tutti i nomi, ecc.

Oh, a proposito, le probabilità sono che avete un gestore di segnale installato per SIGINT e gli argomenti non ha ragione in qualche modo.

Altri suggerimenti

Un'alternativa è quella di smettere di gdb dalla cattura del SIGINT digitando al prompt handle SIGINT noprint pass gdb prima di eseguire il programma.

Una possibilità è quella di caricare il file core prodotta quando non è in esecuzione nel debugger gdb in. Dall'interno di gdb, tipo core-file [filename].

È anche possibile inviare il CTRL-C (aka SIGINT) da un altro terminale: uccidere -INT

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top