Leçon 25 : gdb — débogage de code natif et core dumps
Ton programme C++ plante avec un segfault — null pointer dereference, stack overflow, buffer overflow. Comment trouver la ligne qui en est la cause ? gdb (GNU Debugger) est l'outil standard pour déboguer du code natif sous Linux. Il permet de s'arrêter à des breakpoints, d'avancer ligne par ligne, d
gdb, c'est comme un détective qui peut arrêter le temps. Quand un programme plante, il demande : « quelle était la valeur de cette variable au moment du crash ? Qui a appelé cette fonction ? Où en étions-nous exactement ? » Un core dump est un instantané de la mémoire enregistré au moment du crash — comme une photo de scène de crime qu'on peut examiner des heures après les faits.
- gdb
- Le debugger standard pour C/C++ sous Linux. Permet l'exécution pas à pas, les breakpoints, l'inspection des variables et l'analyse de core dumps.
- Point d'arrêt (breakpoint)
- Une instruction donnée à gdb pour arrêter l'exécution à une ligne de code spécifique. Permet d'inspecter l'état du programme à un point précis.
- backtrace (bt)
- Une commande gdb qui affiche le call stack actuel : la liste de toutes les fonctions appelées et pas encore retournées, de la plus récente à la plus ancienne.
- core dump
- Un fichier créé quand un programme plante, contenant un instantané de la mémoire du programme, des registres et du call stack au moment du crash. gdb peut l'analyser post-mortem.
- watchpoint
- Comme un breakpoint, mais sur une variable : gdb s'arrête chaque fois que la variable change de valeur. Utile pour trouver où dans le code une valeur change alors qu'elle ne le devrait pas.