1. Generar la configuración del sistema de archivos central
Use el comando ulimit -c para ver la configuración del archivo central en el sistema actual. 0 significa que no se genera ningún archivo central; un número que no es 0 significa que el tamaño del archivo central está limitado a no más de a, y la unidad es k; ilimitado significa que el tamaño del archivo central no está limitado.
ulimit -c // 查看当前系统设置
ulimit -c 4096 // 修改系统设置,限制core文件大小不超过4096kb
ulimit -c unlimited // 修改系统设置,不限制core文件大小
La configuración de la máquina virtual de prueba es limitar el archivo principal a no más de 1024 kb:
2. Configuración de la ruta de generación de archivos del núcleo
Utilice el comando sysctl o vea el archivo de configuración para obtener la ruta de generación del archivo principal del sistema actual:
方法一:sysctl kernel.core_pattern
方法二:cat /proc/sys/kernel/core_pattern
Cómo modificar la ruta del archivo principal:
(1) Ejecute el comando sysctl kernel.core_pattern=core path para modificarlo y fallará después de reiniciar
(2) Agregue kernel.core_pattern=core ruta en /etc/sysctl.conf, luego ejecute sysctl -p para cargar
El nombre principal en sí puede tener la siguiente información adjunta:
%pag | Generar ID de proceso de archivo central |
%gramo | Genere el ID de grupo real del archivo central |
%s | Generar señal de archivo central |
%t | Generar marca de tiempo del archivo central |
% h | Generar nombre de host del archivo central |
%mi | Generar el nombre del archivo del programa principal |
%u | Genere la ID de usuario real del archivo central |
Lo siguiente utiliza la modificación temporal para modificar la ruta predeterminada del archivo central y agregar la información de tiempo del archivo central:
3. Prueba de código
Guarde el siguiente código como coretest.c:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char *p = NULL;
*p = 1;
}
Ejecute el comando gcc -g coretest.c -o main para generar un programa ejecutable y ejecute directamente ./main para ejecutar el programa ejecutable:
4. Depuración de archivos del núcleo
Use el comando gdb para seleccionar el archivo principal y el programa fuente para la depuración, y podrá ubicar la ubicación del error del programa: