Linux génère une configuration liée au fichier principal, exemple de débogage du fichier principal

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 :

Je suppose que tu aimes

Origine blog.csdn.net/cesheng3410/article/details/130102431
conseillé
Classement