2013-03-07 15 views
5

Ho un server scritto in C++ arresto anomalo nell'ambiente di produzione al quale non ho accesso diretto. Il crash genera un enorme core dump ~ 34G che non riesco a copiare localmente. Devo analizzare il core dump ma non so come possa essere fatto senza copiarlo. Ho provato a eseguire gdbserver sulla destinazione ma non ci vuole un file di base come parametro e sembra valido solo per il debug di esecuzione di applicazioni remote da una macchina host. C'è un modo in cui questo può essere fatto?dump di debug del nucleo remoto di debug

+0

per un programma che genera un dump di tale dimensione, non hai già un meccanismo di registrazione per aiutarti a restringere il problema a una parte specifica dell'app? – didierc

+0

Usa 'ssh' per accedere al computer remoto - se hai accesso a' gdbserver', mi aspetto che tu possa fare la maggior parte delle cose. –

+0

Non riesco a 'ssh' sulla macchina remota ma posso chiedere all'amministratore di sys di eseguire qualcosa come' gdbserver' per me, ma non può analizzare e eseguire il debug del file core. Stavo pensando ad una soluzione più permanente che funziona anche in futuro quando accadono cose del genere. E non abbiamo ancora implementato un meccanismo di registrazione corretto :( – user1444800

risposta

1

Ho bisogno di analizzare il core dump ma non so come possa essere fatto senza copiarlo.

Non è possibile. Avrai bisogno di ottenere il core dump dove puoi eseguire GDB.

Non riesco a ssh sulla macchina remota ma posso chiedere all'amministratore di sys di eseguire qualcosa come gdbserver per me ma non può analizzare e eseguire il debug del file core.

Non hai bisogno di amministratore di sistema per analizzare qualsiasi cosa. Devi solo chiedergli di eseguire una serie di comandi GDB e inviarti l'output. Per esempio.

where 
thread apply all where 
info registers 
disas 

... ti porterà un lungo cammino per comprendere il problema, e prenderà il vostro amministratore di sistema meno di 5 minuti.

Ho ancora bisogno di decomprimerlo per eseguirlo su gdb che non voglio fare sul mio computer locale.

Inoltre, parla con il tuo manager. La configurazione di sviluppo è irragionevole. Devi essere in grado di analizzare i crash di produzione localmente e questo significa che devi avere accesso a una macchina sufficientemente robusta.