2014-12-21 11 views
19

Sotto Linux, quando un processo si arresta in modo anomalo, verrà creato un core dump.Come creare un core dump anche se normalmente il processo è in esecuzione?

Tuttavia, voglio creare un core dump quando il processo non si blocca, ma sembra buggato. Un esperto remoto ha bisogno del dump di base da analizzare.

In Windows, è possibile creare un file di dump di un processo tramite il task manager e, successivamente, il processo è ancora in esecuzione.

È possibile sotto Linux?

risposta

20

chiamata gdb, quindi

attach pid 
gcore 

dove pid è l'ID di processo del processo in questione.

9

Se si desidera eseguire questa operazione a livello di codice, provare a utilizzare google-coredumper. Il loro esempio:

#include <google/coredumper.h> 
... 
WriteCoreDump('core.myprogram'); 
/* Keep going, we generated a core file, 
* but we didn't crash. 
*/ 
14

si può fare all'interno del codice con:

if (fork() == 0) abort(); 
+5

Questa probabilmente non è la soluzione migliore ma il ragazzo è intelligente :) –

17

È possibile utilizzare gcore giusto programma di utilità da linea di comando:

gcore [-o filename] pid 

A proposito, se si desidera per visualizzare solo la traccia stack del processo, l'utilità gstack eseguirà il lavoro.

Entrambe le utilità sono fornite con gdb.

Problemi correlati