
Debug Kernel
Description
La formation Debug Kernel propose d’explorer avec les participants, le système qui sous-tend le fonctionnement du noyau LINUX pour mieux l’appréhender et connaître les sources d’information liées.
Public concerné
Ce cours s'adresse aux développeurs expérimentés.
Objectifs de la formation
- Savoir collecter de manière exhaustive les informations liées à un dysfonctionnement du noyau
- Savoir analyser les informations recueillies
Prérequis
Pour suivre efficacement cette formation, les stagiaires doivent avoir une solide expérience en développement sous Linux. Cela implique :
- Maîtrise du langage C: Le noyau Linux étant principalement écrit en C, une compréhension approfondie de ce langage est essentielle.
- Connaissance approfondie des systèmes Unix/Linux: Structure du système de fichiers, processus, signaux, appels système, etc.
- Utilisation avancée de la ligne de commande: Maîtrise des outils comme gcc, make, gdb, strace, ltrace, etc.
- Compréhension des concepts de noyau: Processus, mémoire, gestion des périphériques, etc.
- Expérience en débogage de programmes: Utilisation de debuggers comme gdb pour identifier et corriger des erreurs dans le code.
Programme de la formation
Systèmes de fichiers et debug
- Système de fichiers virtuel procfs
- Système de fichiers virtuel sysfs
- Collecter des informations de debug avec debugfs
- Stocker des informations de manière persistente avec
- pstore
Debug user space
- Récupérer un core dump
- Utiliser gdb
- Détection de head corruption avec heap / alloc
Erreurs kernel et dialogue avec le noyau
- cktrace
- warn
- Kernel tainted – liste des flags
- oops
- panic
- bug
Configurer son kernel pour améliorer le debug
- debug info
- kdump / kexec
- Configuration de spin lock, mutex, utilisation de locks printk
Les outils de debug kernel
- System.map
- Mettre en place une console série
- Spécificités de l’utilisation d’une console série sous Xen
- Mise en place d’une netconsole
- Utiliser qemu pour debugger
- kgbd (port série)
- crash / kdump
- De l’importance de l’appareil photo
- racing / ftrace
- Quelques paramètres kernel utiles :
- panic=oops, vga=, earlyprintk=, ignore_loglevel, initcall_debug, log_buf_len
Analyser les informations recueillies
- Identifier des adresses mémoire avec addr2line
- gdb, le couteau suisse du débogage
- Un outil d’analyse dédié au kernel : crash
- Outil d’aide à l’analyse : printk
- Définir un format de message avec pr_*
- Extraire le device et son driver avec dev_*
- printk versus dev_* ?