Supponendo di disporre delle autorizzazioni appropriate, è possibile collegare gdb a qualsiasi processo. È possibile farlo su riga di comando con:
gdb /path/to/binary _pid_
o dall'interno gdb con il comando attach:
attach _pid_
Quindi, una volta che il demone è avviato, è possibile utilizzare una di queste tecniche da allegare al PID finale il tuo demone è in esecuzione come. Allegando gdb si arresta il processo che si sta tracciando quindi è necessario emettere un "continua" per riavviarlo.
Non conosco un modo diretto per ottenere gdb per eseguire comandi arbitrari quando il programma si blocca. Ecco una soluzione che posso pensare:
- Creare e registrare un gestore di segnale per SIGSEGV.
- Dire a gdb di non fermarsi su quel segnale (
handle SIGSEGV nostop
)
- Impostare un punto di interruzione sulla prima riga del gestore di segnale.
- Assegna commands to the breakpoint dal punto 3
fonte
2010-01-12 19:45:36
http: // stackoverflow.it/questions/17965/generate-a-core-dump-in-linux SO post sulla produzione di core dump –
@HassanSyed: http://vmlinux.org/jocke/mirror/www.objsw.com/docs/gdb_22.html è un collegamento morto. – bgoodr