Formation LINUX Debug Kernel
Objectifs
Identifier et utiliser les différentes sources d’information relatives au fonctionnement du noyau Linux.
Collecter de manière exhaustive les informations liées à un dysfonctionnement du noyau en utilisant des outils comme debugfs et pstore.
Analyser les informations de debug recueillies, en utilisant des outils comme gdb, addr2line et crash.
Configurer le noyau Linux pour améliorer les capacités de debug, en utilisant des options comme kdump, kexec et printk.
Utiliser les outils de debug spécifiques au noyau Linux, tels que System.map, qemu, kgbd et ftrac.
Pré-requis
Participants
Programme de formation
SYSTÈMES DE FICHIERS ET DEBUG
Système de fichiers virutel procfs
Système de fichiers virutels 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
Tracing / 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
crash : un outil d'analyse dédié au kernel
printk : un outil d'aide à l'analyse
Définir un format de message avec pr_*
Extraire le device et son driver avec dev_*
printk versus dev_* ?