2011-05-27 12 views
18

Me gustaría saber cómo generar un archivo de volcado del núcleo en Ubuntu. Estoy usando Ubuntu 8.04.1 y el compilador gcc 4.2.3. He escrito un simple programa en C para generar un volcado del núcleo. He compilado el programa como en - gcc -g badpointer.c. Cuando ejecuto el programa, da un error de segmentación pero no se genera un volcado de núcleo. ¿Qué cosas adicionales tengo que hacer para generar un archivo de volcado de núcleo?Cómo generar el archivo de volcado del núcleo en Ubuntu

Respuesta

31

Compruebe la salida de ulimit -c, si sale 0, esta es la razón por la que no tiene núcleo descargado.

Uso

ulimit -c unlimited

para permitir la creación núcleo (quizás reemplazar unlimited por un límite de tamaño real para ser más seguro).

0

Establezca un tamaño de volcado de núcleo máximo con ulimit -cTAMAÑO.

32

Activa tus coredumps por:

ulimit -c unlimited 

También puedes ver:

$ sysctl kernel.core_pattern 

para ver donde se crean los vertederos (% electrónico será el nombre del proceso, y% t será la hora del sistema)

Puede cambiarlo en /etc/sysctl.conf y luego volver a cargarlo por sysctl -p.

Puede probarlo por:

sleep 10 & 
killall -SIGSEGV sleep 

Si el núcleo dumping es exitosa, se verá “(core dumped)” después de la indicación de fallo de segmentación.

Consulte también:

How to generate a stacktrace when my gcc C++ app crashes


Ubuntu

Si tienes Ubuntu, sus vertederos son creados por apport en /var/crash, pero en diferente formato (editar el archivo de Míralo).

Lea más en:

https://wiki.ubuntu.com/Apport


OS X

En OS X, los volcados se crean automáticamente por Crash Reporter en forma de trazas inversas. Puede encontrar estos archivos de bloqueo ejecutando Console y yendo a la sección 'Informes de diagnóstico del usuario' (en el grupo 'Información de diagnóstico y uso') o puede ubicarlos en ~/Library/Logs/DiagnosticReports.

Los archivos principales reales se generan en /cores.

Leer más: How to generate core dumps in Mac OS X?

+0

con 'sueño 10 y killall -SIGSEGV sleep' howto añadir opciones a repoen o mantener cerrada aplicación? –

+0

@ e-info128 Una vez que el proceso murió de señal SIGSEGV (básicamente se bloqueó), no puede volver a abrirlo. Debe volver a iniciar un nuevo proceso a menos que sea un servicio, por lo que puede reaparecer automáticamente. – kenorb

Cuestiones relacionadas