Démythification des débogueurs : Anatomie d’un programme en cours d’exécution
Cet article explore en profondeur la mécanique de bas niveau d’un programme en cours d’exécution. À l’aide de l’analogie d’une cartouche de jeu vidéo sur une NES, il explique comment les systèmes d’exploitation modernes virtualisent l’exécution des programmes. Il détaille des concepts clés tels que les espaces d’adressage virtuels, les threads d’exécution, les images exécutables, les chargeurs, les modules et les processus. L’article explique comment les espaces d’adressage virtuels, via des tables de pages, mappent les adresses virtuelles aux adresses physiques, permettant à plusieurs programmes de partager la mémoire physique sans interférence. Il couvre également l’ordonnancement des threads, les formats d’images exécutables (PE et ELF), le rôle du chargeur et le chargement/déchargement dynamique des modules. Enfin, il résume le concept de processus, qui intègre les threads, les modules et les espaces d’adressage virtuels.