10.4. Creación y acceso a un volcado del núcleo con coredumpctl
La herramienta coredumpctl de systemd puede agilizar significativamente el trabajo con los volcados de núcleo en la máquina donde se produjo el fallo. Este procedimiento describe cómo capturar un volcado de núcleo de un proceso que no responde.
Requisitos previos
El sistema debe estar configurado para utilizar
systemd-coredumppara el manejo de los volcados del núcleo. Para verificar que esto es cierto:sysctl kernel.core_pattern
$ sysctl kernel.core_patternCopy to Clipboard Copied! Toggle word wrap Toggle overflow La configuración es correcta si la salida comienza con lo siguiente:
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump
kernel.core_pattern = |/usr/lib/systemd/systemd-coredumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Procedimiento
Encuentra el PID del proceso colgado, basado en una parte conocida del nombre del archivo ejecutable:
pgrep -a executable-name-fragment
$ pgrep -a executable-name-fragmentCopy to Clipboard Copied! Toggle word wrap Toggle overflow Este comando mostrará una línea de la forma
PID command-line
PID command-lineCopy to Clipboard Copied! Toggle word wrap Toggle overflow Utilice el valor de command-line para verificar que el PID pertenece al proceso previsto.
Por ejemplo:
pgrep -a bc 5459 bc
$ pgrep -a bc 5459 bcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Envía una señal de aborto al proceso:
kill -ABRT PID
# kill -ABRT PIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Verifique que el núcleo ha sido capturado por
coredumpctl:coredumpctl list PID
$ coredumpctl list PIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Por ejemplo:
coredumpctl list 5459 TIME PID UID GID SIG COREFILE EXE Thu 2019-11-07 15:14:46 CET 5459 1000 1000 6 present /usr/bin/bc
$ coredumpctl list 5459 TIME PID UID GID SIG COREFILE EXE Thu 2019-11-07 15:14:46 CET 5459 1000 1000 6 present /usr/bin/bcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Examine más a fondo o utilice el archivo del núcleo según sea necesario.
Puede especificar el volcado del núcleo por PID y otros valores. Consulte la página del manual coredumpctl(1) para obtener más detalles.
Para mostrar los detalles del archivo del núcleo:
coredumpctl info PID
$ coredumpctl info PIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para cargar el archivo del núcleo en el depurador GDB:
coredumpctl debug PID
$ coredumpctl debug PIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dependiendo de la disponibilidad de la información de depuración, GDB sugerirá comandos a ejecutar, como por ejemplo
Faltan los debuginfos por separado, utilice: dnf debuginfo-install bc-1.07.1-5.el8.x86_64
Faltan los debuginfos por separado, utilice: dnf debuginfo-install bc-1.07.1-5.el8.x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow Para más detalles sobre este proceso, consulte Sección 7.4, “Obtención de paquetes debuginfo para una aplicación o librería usando GDB”.
Para exportar el archivo de núcleo para su posterior procesamiento en otro lugar:
coredumpctl dump PID > /path/to/file_for_export
$ coredumpctl dump PID > /path/to/file_for_exportCopy to Clipboard Copied! Toggle word wrap Toggle overflow Sustituya /path/to/file_for_export por el archivo en el que desea colocar el volcado del núcleo.