Débogage du kernel

Je voudrais étudier le stream de certains pilotes de périphériques Linux et un peu de stream de kernel (thread de commutation de context cum et gestion des interruptions).

Comment puis-je déboguer le kernel Linux? Quelles sont les étapes de base pour le faire?

Récemment, j'ai réussi à comstackr et intégrer le nouveau kernel (2.6.34.7) dans ma machine exécutant le kernel 2.6.29.

Cela dépend de ce dont vous avez vraiment besoin. Probablement la fonction simple printk() va être OK pour le début. Il y a aussi l'interface /proc vous pouvez utiliser pour get des informations utiles du kernel.

Si vous avez besoin de quelque chose de plus compliqué, utilisez KGDB (débogueur de kernel).

Allez dans le dossier de votre source de kernel et jetez un coup d'œil à l'intérieur de Documentation/ dossier. Commencez par parcourir le file kernel-parameters.txt search de references au debugging.

Si votre kernel est compilé avec l'option CONFIG_DEBUG_KERNEL , vous pouvez facilement ajuster la verbosité des messages du kernel via l'option de démarrage loglevel .

Les autres options autres que KGDB seraient en train de déboguer le kernel en utilisant le QEMU et le GDB. Contrairement à la KGDB, la combinaison QEMU-GDB ne nécessite qu'une seule machine.