2010-07-27 15 views
7

Qual è il modo migliore per analizzare i crash su Linux?su Linux

Ci aspettiamo di costruire il software e consegnare una versione di prova ai tester. I tester potrebbero non essere in grado di ricordare come riprodurre l'arresto anomalo o l'arresto anomalo potrebbe essere totalmente intermittente. Inoltre non avranno un ambiente di sviluppo sulle loro macchine. Il software è scritto in C/C++ e compilato in codice macchina nativo per la distribuzione.

+0

Possibile duplicato http://stackoverflow.com/questions/914833/linux-c-how-to-debug-release-application – DumbCoder

risposta

7

Se si dispone di spazio sul disco, lasciare che l'applicazione crea la sua coredump quando si blocca.

ulimit -c unlimited 

In seguito è possibile eseguire il debug con GDB.

3

Oltre al coredumping e allo stacktracing come già notato, assicurati di poter identificare facilmente quali versioni dei tuoi eseguibili siano in esecuzione e di essere in grado di rispondere a quale versione di ciascun file di origine va in quale versione binaria (ad esempio, trascorri del tempo con il tuo sistema di controllo del codice sorgente e i tuoi script di compilazione). In caso contrario, né un file principale né una traccia dello stack possono essere d'aiuto.

3

I dump di core sono utili, ma non sempre ti dicono tutto quello che vuoi sapere su come sei finito nella condizione di errore.

Le azioni di registrazione, gli input e gli eventi possono essere molto utili. Se sei in grado di registrare ogni esecuzione del tuo programma in modo tale che in caso di arresto anomalo uno sviluppatore possa ottenere l'accesso al log e rigenerare l'errore potrebbe essere molto utile.

Se possibile, è necessario creare i programmi con i simboli di debug massimo generati e quindi strapparli se non si desidera o non è possibile consentire alle versioni di rilascio di averli, ma conservare una copia di ciascuna versione rilasciata con i simboli di debug che puoi associare al file principale se devi eseguire il debug di un arresto anomalo.