1. ¿Qué es un archivo central?
Un archivo con información de pila e información de depuración generada cuando se produjo un "fallo de segmentación (volcado de núcleo)" después de ejecutar el programa en cuestión.
Al compilar, debe agregar la opción -g para que el programa genere información de depuración: gcc -g core_test.c -o core_test
2. Cómo configurar y generar archivos core
(1) cambio de archivo central
① Use ulimit -c para ver el cambio de núcleo, si es 0, significa apagado y no se generará ningún archivo de núcleo;
② Use ulimit -c [filesize] para establecer el tamaño del archivo central, y el archivo central se generará cuando la configuración mínima sea 4;
③ Use ulimit -c ilimitado para establecer el tamaño del archivo principal en ilimitado, lo cual es una práctica común;
④ Si necesita ejecutarse en el arranque, debe escribir este comando en /etc/profile y otros archivos.
(2) Nombre de archivo principal y ruta de guardado
①El archivo principal tiene un nombre y una ruta predeterminados, pero por conveniencia, generalmente lo nombramos nosotros mismos y especificamos la ruta para guardar;
② Puede configurar el nombre del archivo principal y guardar la ruta a través de /proc/sys/kernel/core_pattern , el método es el siguiente:
%p - inserta el pid en el nombre del archivo Agregar pid %u - inserta el uid actual en el nombre del archivo Agrega el uid actual %g - inserta el gid actual en el nombre del archivo Agrega el gid actual %s - inserta la señal que provocó el volcado del núcleo en el nombre del archivo Agrega la señal que provocó el núcleo que se generará % t: inserte la hora de UNIX en que se produjo el volcado de núcleo en el nombre de archivo Agregue la hora de Unix en que se generó el archivo principal %h: inserte el nombre de host donde se produjo el volcado de núcleo en el nombre de archivo Agregue el nombre de hostecho " /corefile/core-%e-%p-%t " > /proc/sys/kernel/core_pattern
Lista de argumentos con nombre:
%e: inserte el nombre del ejecutable de volcado de núcleo en el nombre del archivo Agrega el nombre del comando .
3. Depurar el archivo central
(1) Método 1: gdb [archivo exec] [archivo central] y ejecute bt para ver la información de la pila:
(2) Método ②: gdb -c [core file] , luego file [exec file] , y finalmente use bt para ver la ubicación del error: