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:
gdbcentro
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).