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

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

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

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

Los archivos de volcado básicos se utilizan para diagnosticar y depurar los bloqueos de software.

Un volcado central es un registro no estructurado del contenido de memoria que contiene información sobre la ejecución del software terminado anormalmente, 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 Core Dump como una caja negra de avión o un archivo de registros.

La gestión de volcados de núcleo puede variar de una distribución de Linux a otro, este tutorial está optimizado tanto para las distribuciones de Linux basadas en Debian como Ubuntu como para las distribuciones de Redhat Linux como Centos.

Todas las instrucciones incluidas en este artículo contienen capturas de pantalla, lo que facilita a cada usuario de Linux comprenderlas y seguirlas.

Habilitar el volcado de núcleo en Linux

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

ulimit -a | núcleo de grep


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

ulimit -s -c ilimitado

Para habilitar el volcado de núcleo de forma permanente, debe editar el archivo/etc/seguridad/límites.confusión. Ábralo con privilegios usando cualquier editor de texto.

sudo nano/etc/seguridad/límites.confusión

Luego, agregue la siguiente línea y cierre los cambios de guardado:

* Core suave ilimitado

Ahora, intentemos ejecutar una aplicación programada para bloquear 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 de núcleo debe crearse en el directorio actual. Puede verificar esto ejecutando el siguiente comando:

núcleo ls -ltr

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 de informe de errores automático (ABRT) en lugar de GDB.

sudo apt install gdb -y

Para ver los archivos de volcado básicos, use la siguiente sintaxis:

gdb centro

En mi caso corro:

GDB CrashingApp Core

Se le pedirá que presione "C" para continuar. Presione y verá el informe.

Por defecto, los archivos de volcado de núcleo se denominan Core.

sudo sysctl -w kernel.core_pattern = core

Puede cambiar los patrones de nombre y destino para identificar los volcados de núcleo fácilmente.

El comando es el siguiente:

-%u incluirá la identificación de usuario en el nombre de volcado central. El - %g incluirá la identificación del grupo y %p el PID.

sudo sysctl -w kernel.core_pattern = core-%u-%g-%P

Como puede ver, después de ejecutar la aplicación de bloqueo nuevamente, se genera un nuevo volcado central que incluye UID, GID y PID.

ls -ltr nore*

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

VALOR Función
De % '%' se deja caer
%% Salir uno '%'
%pag Incluye PID
%PAG Incluye PID global
%i Muestra el hilo ID
%I ID de hilo global
%u ID de usuario
%gramo Identificación del grupo
%d Modo de volcado
%s Número de señal
%T Tiempo unix de vertedero
%H Nombre de host
%mi Archivo ejecutable
%MI Ruta de archivo ejecutable

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

La sintaxis es la siguiente:

"/Cored" es el directorio donde se almacenarán los vertederos de núcleo. Estos nombres incluirán PID y PID global.

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

Como puede ver, después de ejecutar la aplicación de bloqueo, el volcado de núcleo se almacenó en el directorio /cored, incluyendo PID y GPID.

LS -LTR /CORED

Cómo deshabilitar los volcados de núcleo en Linux

Desactivar el volcado de núcleo es tan simple como habilitarlos.

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

ulimit -s -c 0

Para deshabilitar permanentemente el volcado de núcleo, editar el/etc/seguridad/límites.Archivo Conf Uso de cualquier editor de texto como se muestra en la figura a continuación.

sudo nano/etc/seguridad/límites.confusión

Agregue las siguientes 2 líneas, luego salga de los cambios de ahorro.

* Soft Core 0
* núcleo duro 0

Finalmente, verifique si Core Dump se deshabilitó correctamente ejecutando lo siguiente:

ulimit -a | núcleo de grep

Como puede ver que el límite del tamaño del archivo central es 0, el volcado de núcleo está deshabilitado.

Conclusión

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