1. Générer la configuration du système de fichiers principal
Utilisez la commande ulimit -c pour afficher la configuration du fichier core dans le système actuel. 0 signifie qu'aucun fichier core n'est généré ; un nombre différent de 0 signifie que la taille du fichier core est limitée à pas plus de a, et l'unité est k ; illimité signifie que la taille du fichier principal n'est pas limitée.
ulimit -c // 查看当前系统设置
ulimit -c 4096 // 修改系统设置,限制core文件大小不超过4096kb
ulimit -c unlimited // 修改系统设置,不限制core文件大小
La configuration de la machine virtuelle de test consiste à limiter le fichier principal à 1 024 Ko maximum :
2. Configuration du chemin de génération du fichier principal
Utilisez la commande sysctl ou affichez le fichier de configuration pour obtenir le chemin de génération du fichier principal du système actuel :
方法一:sysctl kernel.core_pattern
方法二:cat /proc/sys/kernel/core_pattern
Comment modifier le chemin du fichier core :
(1) Exécutez la commande sysctl kernel.core_pattern=core path pour le modifier, et il échouera après le redémarrage
(2) Ajoutez le chemin kernel.core_pattern=core dans /etc/sysctl.conf ; puis exécutez sysctl -p pour charger
Le nom du noyau lui-même peut avoir les informations suivantes ajoutées :
%p | Générer l'ID de processus du fichier principal |
%g | Générer l'ID de groupe réel du fichier core |
%s | Générer un signal de fichier principal |
%t | Générer l'horodatage du fichier principal |
%h | Générer le nom d'hôte du fichier principal |
%e | Générer le nom du fichier du programme principal |
%u | Générer l'ID utilisateur réel du fichier core |
Ce qui suit utilise une modification temporaire pour modifier le chemin par défaut du fichier core et ajouter les informations temporelles du fichier core :
3. Test de code
Enregistrez le code suivant sous coretest.c :
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char *p = NULL;
*p = 1;
}
Exécutez la commande gcc -g coretest.c -o main pour générer un programme exécutable, et exécutez directement ./main pour exécuter le programme exécutable :
4. Débogage du fichier principal
Utilisez la commande gdb pour sélectionner le fichier principal et le programme source pour le débogage, et vous pouvez localiser l'emplacement de l'erreur du programme :