# Kgdb

kgdb est le nom d'un débogueur du noyau Linux au niveau code source. Un tel débogueur est un outil d'aide au développement de pilotes ou de fonctionnalités du noyau, permettant de comprendre précisément ce qui se déroule réellement dans le cœur du système d'exploitation, de le mettre en pas à pas, et d'agir dessus.
C'est un logiciel libre développé sous licence GNU GPL par Dave Grothe. Le projet est hébergé par SourceForge.net et son développement est soutenu par la société LinSysSoft, qui en fournit par ailleurs un support professionnel sous le nom de produit KGDB Pro.
kgdb est aussi le nom du débogueur du noyau de FreeBSD.

## Considérations techniques

Le debug du noyau outillé avec kgdb (la cible, ou target) se fait à distance (debug croisé) à partir d'une seconde machine, avec un simple GNU Debugger standard côté poste de développement (PC hôte, ou host) à travers une liaison série (RS232, câble null modem) ou par Ethernet en TCP/IP.
kgdb est disponible sous Linux pour les architectures de processeurs suivantes : x86, x86-64, PowerPC, ARM, MIPS, et S390.

## Historique

kgdb est resté durant de longue années fourni sous forme de patch à appliquer manuellement aux fichiers source du noyau Linux.
Linus Torvalds a en effet longtemps refusé d'intégrer un tel débogueur au noyau Linux, arguant principalement que l'objectif ne devrait pas être de faciliter la vie aux développeurs mais plutôt de répondre aux besoins des utilisateurs, en particulier en leur permettant de remonter plus facilement les problèmes rencontrés à l'usage. D'ailleurs, selon lui, faciliter le développement du noyau n'a aucun intérêt, ne sert pas le projet, et réduire les temps de développement conduit à réduire la qualité.
Il a par la suite précisé sa pensée en indiquant que ce n'était tout simplement pas une priorité de Linux, puisqu'il y a beaucoup plus de choses importantes qui se produisent chez les utilisateurs, et qu'il ne reviendrait plus sur ce sujet tant que le patch ne serait pas remis au propre et disponible dans une branche séparée de toute autre fonctionnalité.
Cette dernière condition a permis que le patch soit re-conditionné dans une version grandement allégée et nettoyée par Ingo Molnar (en particulier sans le debug par Ethernet en TCP/IP) conçue de manière à avoir un impact minimal sur les sources et le fonctionnement du noyau Linux. Ceci dans le but d'ajouter que par la suite toutes les autres fonctions à ce périmètre minimal, de manière à mieux en maîtriser l'impact.
Kgdb a finalement été accepté et intégré dans le tronc principal par Linus Torvalds, publié dans la première release candidate du noyau 2.6.26-rc1 le 3 mai 2008 (en même temps que le support du PAT pour x86).

## Concurrents

kgdb est en passe de devenir la référence des débogueurs du noyau Linux maintenant qu'il y est intégré nativement, donc sans aucun travail de préparation pour le développeur, mais il n'est pas le seul.
* KDB (soutenu par sgi) est son concurrent le plus célèbre, qui ne nécessite pas de travailler à distance, mais ne permet pas le debug au niveau des sources : il impose de travailler au niveau code machine, ce qui n'est pas réellement simple pour un développeur traditionnel, et peu efficace sur une grande quantité de code.
* NLKD est le Novell Linux Kernel Debugger de Novell, qui permet un debug local, mais aussi le debug à distance avec le protocole GDB au niveau du code source
* Linice est un projet abandonné de débogueur de niveau source possédant le look and feel du célèbre SoftICE pour Windows.