Débogage avancé/Objectifs
Pour pouvoir correctement déboguer, le programmeur doit trouver la différence entre ce qui a été prévu et ce qui est implémenté. Pour cela, il doit construire une image mentale correct de ce qui se passe globalement dans son processus afin de pouvoir la comparer avec son autre image mentale de ce qui aurait dû se passer.
L'algorithmique utilisée dans le programme, ses structures de données et la programmation de cet algorithme (langage utilisé, expression des structures de données, fabrication de l'exécutable, exécution ou interprétation du script) sont les premières fondations utilisées dès les premiers débogages réalisés en ajoutant des 'print', 'printf' ou 'puts' au milieu du code.
Néanmoins, dès que le code devient un peu technique, que l'espace d'état du programme devient grand, ou bien que l'exécution est longue ou complexe (par exemple une exécution parallèle multi-threadée), il faut pouvoir inspecter tout le processus pendant son exécution afin de comprendre son état actuel.
Reconstruire mentalement son état implique alors de prendre en compte et de mobiliser des connaissances en compilation (code, données, mécanisme d'appel des fonctions, pile, tas), en système d'exploitation (allocation dynamique de mémoire, protection de la mémoire, thread, pile), et en architecture des ordinateurs (registres, assembleur, mémoire virtuelle).
Cette leçon porte sur les outils et rappelle les différents fondamentaux qui aident au débogage.