Cómo habilitar el volcado de núcleo en Linux

Este tutorial explica cómo habilitar el volcado del núcleo en Linux.

Después de leer este tutorial, podrá verificar si el volcado del núcleo está habilitado, cómo habilitarlo o deshabilitarlo, cómo verlo y más.

Los archivos de volcado del núcleo se utilizan para diagnosticar y depurar fallas de software.

Un volcado del núcleo es un registro no estructurado del contenido de la memoria que contiene información sobre la ejecución del software que finalizó de forma anómala, incluido el motivo del bloqueo.

En otras palabras, esta es una instantánea del estado del programa con el proceso de ejecución y terminación registrado. Puede pensar en el volcado del núcleo como una caja negra de un avión o un archivo de registros.

La gestión del volcado del núcleo puede variar de una distribución de Linux a otra, este tutorial está optimizado para distribuciones de Linux basadas en Debian como Ubuntu y distribuciones de RedHat Linux como CentOS.

Todas las instrucciones incluidas en este artículo contienen capturas de pantalla, lo que facilita que todos los usuarios de Linux las entiendan y las sigan.

Habilitación del volcado de núcleo en Linux

El primer paso es verificar si el volcado del núcleo está habilitado. Para este propósito, use el siguiente comando. Si el tamaño del archivo principal es 0, como en el ejemplo a continuación, el volcado principal está deshabilitado.

ulímite -a | núcleo grep


Para habilitar el volcado del núcleo en Linux, con tamaño ilimitado, use el siguiente comando. Luego, ejecute el comando anterior y verá que el 0 se reemplaza con ilimitado.

ulimit -S -c ilimitado

Para habilitar el volcado del núcleo de forma permanente, debe editar el archivo /etc/security/limits.conf. Ábrelo con privilegios usando cualquier editor de texto.

sudo nano / etc / seguridad / limites.conf

Luego, agrega la siguiente línea y cierra guardando cambios:

* núcleo blando ilimitado

Ahora, intentemos ejecutar una aplicación programada para fallar intencionalmente.

Como puede ver en la captura de pantalla a continuación, se generó el volcado del núcleo.

De acuerdo con la configuración predeterminada en las distribuciones de Linux basadas en Debian, el volcado del núcleo debe crearse en el directorio actual. Puede verificar esto ejecutando el siguiente comando:

ls -ltr núcleo

Como puede ver en la figura anterior, el volcado del núcleo se generó correctamente.

Para verlo, debe instalar el depurador GNU. Puede instalarlo usando apt como se muestra en la imagen a continuación.

Tenga en cuenta que los usuarios de sistemas basados ​​en RedHat deben usar la Herramienta automática de informes de errores (ABRT) en lugar de GDB.

sudo apt install gdb -y

Para ver los archivos de volcado del núcleo, utilice la siguiente sintaxis:

gdb < Programa de bloqueo > core

En mi caso ejecuto:

gdb fallando el núcleo de la aplicación

Se le pedirá que presione «c» para continuar. Púlselo y verá el informe.

De forma predeterminada, los archivos de volcado del núcleo se denominan núcleo.

sudo sysctl -w kernel.core_pattern=núcleo

Puede cambiar los patrones de nombre y destino para identificar los volcados de memoria fácilmente.

El comando es el siguiente:

-%u incluirá el ID de usuario en el nombre del volcado del núcleo. El -%g incluirá el ID de grupo y %p el PID.

sudo sysctl -w kernel.core_pattern=núcleo- % u- % g- % p

Como puede ver, después de volver a ejecutar la aplicación que falla, se genera un nuevo volcado de memoria que incluye UID, GID y PID.

ls -ltr núcleo *

Hay valores adicionales que puede usar para definir patrones de volcado del núcleo. Puede encontrarlos en la lista a continuación.

VALOR
Función

%<NULO>
‘%’ se deja caer

%%
salida uno ‘%’

%pag
Incluye PID

%PAG
Incluye PID global

%i
Muestra la identificación del hilo

%YO
ID de subproceso global

%u
ID de usuario

%gramo
Identificación del grupo

%d
Modo de volcado

%s
Número de señal

%t
UNIX tiempo de volcado

% h
nombre de host

%mi
Archivo ejecutable

%MI
Ruta del archivo ejecutable

También puede definir un directorio de volcados del núcleo para almacenarlos.

La sintaxis es la siguiente:

“/cored” es el directorio donde se almacenarán los volcados del núcleo. Estos nombres incluirán tanto PID como Global PID.

sudo sysctl -w kernel.core_pattern= / cored / core- % p- % P

Como puede ver, después de ejecutar la aplicación bloqueada, el volcado del núcleo se almacenó en el directorio /cored, incluidos tanto el PID como el GPID.

ls -ltr / con núcleo

Cómo deshabilitar volcados de núcleo en Linux

Deshabilitar el volcado del núcleo es tan simple como habilitarlos.

Simplemente establezca el límite en 0 ejecutando el siguiente comando:

ulímite -S -c 0

Para deshabilitar permanentemente el volcado del núcleo, edite el archivo /etc/security/limits.conf usando cualquier editor de texto como se muestra en la figura a continuación.

sudo nano / etc / seguridad / limites.conf

Agregue las siguientes 2 líneas, luego salga y guarde los cambios.

* núcleo blando 0
* núcleo duro 0

Finalmente, verifique si el volcado del núcleo se deshabilitó con éxito ejecutando lo siguiente:

ulímite -a | núcleo grep

Como puede ver, el límite de tamaño del archivo principal es 0, el volcado principal está deshabilitado.

Conclusión

Los volcados del núcleo pueden ser muy útiles para depurar procedimientos e identificar fallas. Se recomienda familiarizarse con ellos para mejorar la respuesta a los problemas. También pueden ser útiles para capturar datos liberados por la memoria dinámica, obteniendo información sobre programas que ya no se ejecutan. También pueden ser útiles para que los programadores encuentren errores. Un volcado de memoria puede guardar el estado de un proceso en un estado definido para volver a él más tarde. También se puede volcar en un host remoto a través de una red (lo cual es un riesgo de seguridad).