Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce que le noyau sous Linux

Qu'est-ce que le noyau sous Linux

藏色散人
藏色散人original
2023-03-23 10:00:502760parcourir

Sous Linux, le core est une image mémoire avec des informations de débogage ajoutées Lorsqu'un programme se termine ou se termine anormalement sous Linux, nous utiliserons le fichier core pour l'analyse, qui contient la mémoire, les registres, le pointeur de pile, etc. en cours d'exécution. Les informations, au format ELF, peuvent être comprises comme le transfert de l'état actuel du programme dans un fichier.

Qu'est-ce que le noyau sous Linux

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Qu'est-ce que le core sous Linux ?

Explication détaillée de la façon d'utiliser les fichiers de base sous Linux

Parfois, le programme se ferme anormalement sans aucun journal. À ce stade, vous pouvez utiliser le fichier de code pour l'analyse. Il enregistrera la mémoire, les registres, le pointeur de pile et autres. informations sur le programme en cours d'exécution

Fichier Core :

Habituellement, lorsqu'un programme se termine ou se termine anormalement sous Linux, nous utiliserons le fichier core pour l'analyse, qui contient la mémoire, les registres, le pointeur de pile et d'autres informations lorsque le programme est en cours d'exécution. Le format est ELF, qui peut être compris comme un programme. L'état actuel du travail est déversé dans un fichier. En analysant ce fichier avec un outil, nous pouvons localiser l'appel de pile correspondant et d'autres informations lorsque le programme se termine anormalement ou se termine. pour aider à résoudre le problème.

Utiliser le débogage du fichier principal

Méthode de génération

Afficher l'état du fichier principal actuel

$ ulimit -a
...
-c: core file size (blocks)   0 # 关闭状态
...

Activer le commutateur de génération

ulimit -c unlimited
ulimit -a
...
-c: core file size (blocks)   unlimited
...

Limiter la taille du fichier principal en blocs, généralement 1 bloc = 512 octets, si le paramètre est trop petit, le fichier peut ne pas être généré

$ ulimit -c 1024
$ ulimit -a
...
-c: core file size (blocks)   1024
...

Désactivez le commutateur de génération

ulimit -c 0
ulimit -a
...
-c: core file size (blocks)   0
...

L'opération ci-dessus sur le fichier principal ne prend effet que pour l'heure actuelle. Si elle doit prendre effet de manière permanente, le l'opération correspondante doit être écrite dans /etc/profile

Chemin de génération

Le fichier core est généré par défaut dans le répertoire de travail du programme. Vous devez vous assurer qu'il y a suffisamment d'espace. et l'autorisation d'écriture pour le répertoire correspondant

echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern

La liste de paramètres utilisée pour nommer

%p - insert pid into filename # 添加 pid 
%u - insert current uid into filename # 添加当前 uid 
%g - insert current gid into filename # 添加当前 gid 
%s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号 
%t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间 
%h - insert hostname where the coredump happened into filename # 添加主机名 
%e - insert coredumping executable name into filename # 添加命令名

/proc/ Si la valeur du fichier sys/kernel/core_uses_pid est 1, peu importe le moment où %p est configuré, le fichier core finalement généré sera ajoutez pid

Méthode de débogage

Vous pouvez utiliser gdb pour déboguer le fichier principal, et vous devez l'apporter lors de la compilation de l'option -g

$ gdb a.out
...
(gdb) core-file core
...
(gdb) bt 
...

Si vous devez déboguer le fichier principal généré par le périphérique intégré sur le PC , vous devez sélectionner l'outil gdb de la plate-forme correspondante et définir l'emplacement du fichier de symboles après avoir entré gdb

$ xxx-xxx-gdb a.out
...
(gdb) solib-search-path xxx.so:xxx.so
...
(gdb) core-file core
...
(gdb) bt
...

Recommandations associées : "Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn