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
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.
Prérequis
Expérience de programmation sous Linux.
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_* ?