¿Dónde encuentro el volcado del núcleo en ubuntu 16.04LTS?


14

Tengo un programa C ++ que hace lo que se supone que debe hacer, pero debe haber algún problema con el puntero, ya que se bloquea al final y crea un volcado del núcleo. Mi problema es que no puedo encontrar el archivo principal, por lo que no puedo depurarlo.

Yo he tratado

ulimit -c unlimited
ulimit -a

y ahora la dimensión del archivo está establecida en ilimitada, pero aún no puedo encontrar el núcleo. He intentado en todas las carpetas escritas aquí, pero todavía parece que no se crea ningún archivo central.

¿Dónde puedo encontrarlo?


Directorio actual, o/var/crash
waltinator

44
Si bien es cierto en la mayoría de los casos, @waltinator, a veces es necesario verificarlo /var/log/apport.log, porque las versiones modernas de Ubuntu usan Apport, que puede interferir con el volcado del núcleo de maneras no obvias. Consulte stackoverflow.com/a/18368068/1772379 para obtener más información.
Ben Johnson

Respuestas:


12

En Ubuntu, los volcados del núcleo son manejados por Apport y pueden ubicarse en /var/crash/. Pero está deshabilitado de forma predeterminada en las versiones estables.

Para habilitar Apport, ejecute: sudo systemctl enable apport.serviceo sudo service apport start.


Para deshabilitar, ejecute: sudo systemctl disable apport.serviceo sudo service apport stoppara volver al método de volcado de núcleo normal. Consulte: ¿Cómo habilito o deshabilito Apport? .

Para deshabilitar permanentemente, edite el /etc/apport/crashdb.confarchivo y comente la siguiente línea:

'problem_types': ['Bug', 'Package'],

agregando un símbolo hash ( #) al comienzo de la línea.

Para deshabilitar los informes de fallos (volver a la normalidad), elimine el símbolo de hash (igual que antes).


También puede verificar core_patterncómo el núcleo maneja los volcados de núcleo:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

Por lo tanto, incluso los archivos principales están deshabilitados por ulimit, apporttodavía capturarán el bloqueo.

Ver también:


3

Para esos googlin ': (en mi caso, Ubuntu 16.04 y 18.04 y una aplicación personalizada) /var/crashtodavía estaba vacío, por lo que era una forma rápida de manejar la creación del núcleo (siempre que esté, por ejemplo, utilizando una configuración incorporada de ulimit relevante )

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

y

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


Fuentes:


Simple, directo, trabajado.
Taekahn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.