Introducción al archivo core de Linux

  
 

1. Una breve introducción al archivo central Cuando un programa falla, generalmente genera un archivo central en el directorio especificado. El archivo principal es solo una imagen de memoria (más información de depuración), principalmente para la depuración.

2. Activar o desactivar la generación del archivo principal Use el siguiente comando para evitar que el sistema genere un archivo principal: ulimit -c 0 El siguiente comando puede verificar si la opción para generar el archivo principal está abierta: ulimit -a Este comando mostrará todo Personalización del usuario, donde la opción -a significa " all ".

También puede modificar el archivo del sistema para ajustar la opción del núcleo. En /etc /profile, usualmente hay una oración para prohibir la generación de archivos del núcleo. Por lo general, esta configuración es razonable: # No hay archivos del núcleo de forma predeterminada --S -c 0 > /dev /null 2 ​​> &1 Sin embargo, en el proceso de desarrollo, a veces para solucionar el problema, es necesario abrir el archivo principal en un entorno de usuario específico para generar las configuraciones en el perfil ~ /.bash_profile del usuario más ulimit -c unlimited Permitir que un usuario específico genere un archivo de núcleo. Si ulimit -c 0, también está prohibido generar un archivo de núcleo, y ulimit -c 1024 limita el tamaño del archivo de núcleo generado a no más de 1024kb. El directorio de archivos y las reglas de nomenclatura /proc /sys /kernel /core_uses_pid pueden controlar si el nombre del archivo del núcleo generado se agrega con pid como extensión. Si se agrega, el contenido del archivo es 1, de lo contrario 0 /proc /sys /kernel /core_pattern puede Establezca la ubicación de guardado del archivo principal formateado o el nombre del archivo, por ejemplo, el contenido del archivo original es core-% e puede modificarse así: echo " /corefile /core-% p-% t " > /proc /sys /kernel /core_pattern El archivo del núcleo generado por el control se almacenará en el directorio /corefile. El nombre del archivo generado es core-command name-pid-timestamp. La siguiente es la lista de parámetros:% p - inserte pid en el nombre de archivo Add pid% u - inserte el uid actual en Nombre del archivo Agregar uid% g actual: inserte el gid actual en el nombre del archivo Agregue el gid% s actual - inserte la señal que causó el coredump en el nombre del archivo Agregue la señal que causa el núcleo% t - inserte la hora de UNIX que el coredump ocurrió en el nombre del archivo al agregar la generación del archivo principal Unix time% h: inserte el nombre de host donde se produjo el coredump en el nombre de archivo Agregue hostname% e: inserte el nombre de ejecutable de coredumping en el nombre de archivo Agregue el nombre del comando

4. Use el archivo del núcleo en el directorio donde se encuentra el archivo del núcleo: gdb - c core iniciará el depurador de GNU para depurar el archivo del núcleo y mostrará el nombre del programa que generó el archivo del núcleo, abortará la señal de este programa, etc. Si ya sabe qué programa generó el archivo del núcleo, como MyServer se bloquea Genere core.12345, luego depure con este comando: gdb -c core MyS Cómo hacer erver debería aprender el uso de gdb

5. Un método pequeño para probar la producción del archivo central directamente en el comando: kill -s SIGSEGV $$

6. Br> Por qué a veces el programa
Abajo
, pero no generó
Core
.

En Linux, hay configuraciones que indican recursos disponibles para el shell y los procesos. Puede ver estas configuraciones usando

#ulimit -a
.
(ulimit es un comando incorporado de bash)

-a Se informan todos los límites actuales -c Tamaño máximo de los archivos principales creados -d Tamaño máximo de un proceso

segmento de datos -e La prioridad de programación máxima (" nice ") -f El tamaño máximo de los archivos escritos por el shell y sus hijos -i El número máximo de señales pendientes -l El tamaño máximo que puede ser Bloqueado en la memoria -m El tamaño máximo del conjunto residente (no tiene efecto en Linux) -n El número máximo de descriptores de archivos abiertos (la mayoría de los sistemas no permiten configurar este valor) -p El tamaño de la tubería en bloques de 512 bytes (esto No se puede establecer) -q El número máximo de bytes en las colas de mensajes de POSIX -r La prioridad máxima de programación en tiempo real -s El tamaño máximo de pila -t La cantidad máxima de c Tiempo de publicación en segundos -u Número máximo de procesos disponibles para un solo usuario -v Cantidad máxima de memoria virtual disponible para el shell -x Número máximo de bloqueos de archivos

Si se muestra -c: Tamaño del archivo del núcleo (bloques, -c)

Si este valor es 0, no se puede generar el archivo del núcleo. Por lo tanto, puede usar:

#ulimit -c 1024
o #ulimit -c unlimited
para habilitar el archivo principal.

Si se genera un archivo Core cuando se produce un error de programa, se muestra Fallo de segmentación (núcleo volcado)
.

7. Core Dump
Directorio de archivos de volcado de núcleo y reglas de denominación
:
/proc /sys /kernel /core_uses_pid puede ser controlado Ya sea para agregar pid como una extensión al nombre del archivo del núcleo, si se agrega, el contenido del archivo es 1, de lo contrario 0

Copyright © Conocimiento de Windows All Rights Reserved