Comment activer le vidage de noyau dans Linux

Comment activer le vidage de noyau dans Linux

Ce tutoriel explique comment activer le vidage de noyau dans Linux.

Après avoir lu ce tutoriel, vous pourrez vérifier si Core Dump est activé, comment l'activer ou le désactiver, comment afficher, et plus.

Les fichiers de vidage de base sont utilisés pour diagnostiquer et déboguer.

Un vidage central est un registre non structuré du contenu mémoire contenant des informations sur l'exécution du logiciel terminé anormalement, y compris la raison de l'accident.

En d'autres termes, il s'agit d'un instantané de l'état du programme avec le processus d'exécution et de terminaison enregistré. Vous pouvez penser à Core Dump comme une boîte noire d'avion ou un fichier de journaux.

La gestion des décharges de base peut varier d'une distribution Linux vers d'autres, ce tutoriel est optimisé à la fois pour les distributions Linux basées à Debian comme Ubuntu et les distributions de Redhat Linux comme Centos.

Toutes les instructions incluses dans cet article contiennent des captures d'écran, ce qui permet à chaque utilisateur de Linux de les comprendre et de les suivre facilement.

Activer le vidage de base dans Linux

La première étape consiste à vérifier si Core Dump est activé. À cette fin, utilisez la commande suivante. Si la taille du fichier central est 0, comme dans l'exemple ci-dessous, alors le vidage de noyau est désactivé.

ulimit -a | noyau grep


Pour activer Core Dump dans Linux, avec une taille illimitée, utilisez la commande suivante. Ensuite, exécutez la commande précédente, vous verrez que le 0 est remplacé par illimité.

ulimit -s -c illimité

Pour activer le vidage de base en permanence, vous devez modifier le fichier / etc / la sécurité / limites.confli. Ouvrez-le avec des privilèges en utilisant n'importe quel éditeur de texte.

Sudo Nano / etc / Security / Limits.confli

Ensuite, ajoutez la ligne suivante et fermez les modifications de sauvegarde:

* Soft Core Unlimited

Maintenant, essayons d'exécuter une application programmée pour se bloquer intentionnellement.

Comme vous pouvez le voir dans la capture d'écran ci-dessous, le dépotoir central a été généré.

Selon la configuration par défaut sur les distributions Linux basées sur Debian, le vidage de base doit être créé dans le répertoire actuel. Vous pouvez vérifier cela en exécutant la commande suivante:

noyau ls -ltr

Comme vous pouvez le voir dans la figure précédente, le dépotoir central a été correctement généré.

Pour le voir, vous devez installer le débogueur GNU. Vous pouvez l'installer en utilisant APT comme indiqué dans l'image ci-dessous.

Notez que les utilisateurs des systèmes basés sur Redhat doivent utiliser l'outil de rapport de bogue automatique (ABRT) au lieu de GDB.

sudo apt install gdb -y

Pour afficher les fichiers de vidage de base, utilisez la syntaxe suivante:

gdb cœur

Dans mon cas, je cours:

GDB CrashingApp Core

On vous demandera d'appuyer sur «C» pour continuer. Appuyez sur-le et vous verrez le rapport.

Par défaut, les fichiers de vidage de base sont appelés Core.

Sudo Sysctl -W Kernel.core_pattern = core

Vous pouvez modifier le nom et les modèles de destination pour identifier facilement les vidages de base.

La commande est la suivante:

-% u Inclura l'ID utilisateur dans le nom de vidage central. Le -% G comprendra l'ID de groupe et% P le PID.

Sudo Sysctl -W Kernel.core_pattern = core-% u-% g-% p

Comme vous pouvez le voir, après avoir à nouveau exécuté l'application écrasante, un nouveau vidage de base est généré, y compris UID, GID et PID.

LS -ltr Core *

Il existe des valeurs supplémentaires que vous pouvez utiliser pour définir les modèles de vidage central. Vous pouvez les trouver dans la liste ci-dessous.

VALEUR Fonction
% '%' est tombé
%% Sortie un «%»
% p Comprend PID
% P Comprend Global Pid
%je Affiche l'ID de fil
%JE ID de fil global
% u ID de l'utilisateur
%g ID de groupe
%d Mode demp
% s Numéro de signal
% T Unix Time of Dump
% h Nom d'hôte
% e Fichier exécutable
% E Chemin de fichier exécutable

Vous pouvez également définir un répertoire de core pour les stocker.

La syntaxe est la suivante:

«/ Cored» est le répertoire où les décharges de noyau seront stockées. Ces noms incluront à la fois PID et Global Pid.

Sudo Sysctl -W Kernel.core_pattern = / cored / core-% p-% p

Comme vous pouvez le voir, après avoir exécuté l'application de crash, le vidage de base a été stocké dans le répertoire / cored, y compris PID et GPID.

ls -ltr / cored

Comment désactiver les vidages de noyau dans Linux

La désactivation du vidage du noyau est si simple que de leur permettre.

Définissez simplement la limite sur 0 en exécutant la commande suivante:

ulimit -s -c 0

Pour désactiver définitivement le dépotoir de noyau, modifiez / etc / sécurité / limites.Fichier Conf à l'aide de tout éditeur de texte comme indiqué dans la figure ci-dessous.

Sudo Nano / etc / Security / Limits.confli

Ajouter les 2 lignes suivantes, puis quitter les modifications de sauvegarde.

* Core doux 0
* Hard Core 0

Enfin, vérifiez si Core Dump a été désactivé avec succès en exécutant ce qui suit:

ulimit -a | noyau grep

Comme vous pouvez le voir, la limite de taille du fichier de noyau est de 0, le vidage du noyau est désactivé.

Conclusion

Les décharges de base peuvent être très utiles pour les procédures de débogage et l'identification des échecs. Il est recommandé de se familiariser pour améliorer les problèmes de réponse. Ils peuvent également être utiles pour capturer les données libérées par la mémoire dynamique, récupérer des informations sur le fait de ne plus d'exécution de programmes. Ils peuvent également être utiles pour que les programmeurs trouvent des erreurs. Un dépotoir central peut sauver l'état d'un processus à un état défini pour y retourner plus tard. Il peut également être jeté sur un hôte distant sur un réseau (qui représente un risque de sécurité).