¿Dónde buscar el archivo principal generado por el bloqueo de una aplicación de Linux?

18

Estoy tratando de averiguar el motivo del bloqueo de una de mis aplicaciones de Linux. Pero no sé a dónde va el núcleo.

cat /proc/sys/kernel/core_pattern
core.%e.%p

¿Alguna idea?

dcds
fuente

Respuestas:

22

El volcado del núcleo se escribe en el directorio actual del proceso en el momento del bloqueo.

Por supuesto, los volcados de núcleo deben estar habilitados, de forma predeterminada, estos están normalmente deshabilitados. Compruebe la salida de ulimit -c, si eso es 0, entonces no se escribirá ningún archivo central. Ejecutar ulimit -c unlimitedpara habilitar volcados de núcleo; Esta es una configuración por proceso que es heredada por los procesos iniciados por ese proceso.

Si se hubiera generado un volcado de núcleo pero no sabe dónde, entonces podría comenzar el proceso nuevamente (si lo hará sin fallar de inmediato), luego verifique su directorio de trabajo haciendo ls -l /proc/$pid/cwddónde $pidestá el ID del proceso. Ese enlace apuntará al directorio de trabajo actual de ese proceso. Lo más probable es que el basurero estará allí. De lo contrario, debe ejecutar finden todo el sistema ...

wurtel
fuente
3
He comprobado que ulimit -c es ilimitado, pero aún no hay nada en el directorio actual del proceso.
dcds
1
Es posible que la aplicación haya detectado un error fatal en sí mismo y haya sido abortado, es decir, no es un bloqueo "real", como una violación de segmentación o similar, lo que generaría un volcado del núcleo. Como no proporciona información sobre la aplicación, no es posible saberlo.
wurtel
1
Definitivamente es un accidente porque a sabiendas estoy haciendo un puntero nulo.
dcds
20

Los sistemas que usan systemd generalmente están configurados para volcar núcleos a

/var/lib/systemd/coredump/

Puede usar el coredumpctlcomando para enumerar los volcados del núcleo. Vea también no-coredumps-after-migrating-to-systemd

StefanQ
fuente