Modules
Une image est un exécutable, une DLL ou un pilote que Windows a chargé dans le cadre d’un processus en mode utilisateur ou du noyau. Le fichier à partir duquel l’image a été chargée est appelé fichier image.
Le moteur du débogueur met en cache une liste de modules pour chaque processus (ou, en mode noyau, le processus virtuel). En règle générale, chaque module de cette liste représente une image dans le processus. La liste des modules du moteur peut être synchronisée avec la cible à l’aide de Recharger.
Note Dans le débogage en mode noyau, la liste des modules du moteur pour le processus virtuel contient à la fois les modules en mode noyau à l’échelle du système et les modules en mode utilisateur du processus actuel.
Un module peut être spécifié par son adresse de base dans l’espace d’adressage virtuel de la cible ou par son index dans la liste des modules que le moteur gère pour la cible. L’index du module est égal à sa position dans la liste des modules. Par conséquent, cet index change si un module avec un index inférieur est déchargé. Tous les modules déchargés ont des index ; ceux-ci sont toujours plus élevés que les index des modules chargés. L’adresse de base d’un module ne change pas tant qu’il reste chargé ; dans certains cas, cela peut changer si le module est déchargé, puis rechargé.
L’index est un nombre compris entre zéro et le nombre de modules dans la cible moins un. Le nombre de modules dans le processus actuel est disponible en appelant GetNumberModules.
L’index peut être utilisé pour rechercher l’adresse de base en appelant GetModuleByIndex. L’adresse de base d’un module possédant un symbole portant un nom donné est disponible à l’aide de GetSymbolModule.
Les méthodes suivantes retournent à la fois l’index et l’adresse de base du module spécifié :
Pour rechercher un module portant un nom de module donné, utilisez GetModuleByModuleName.
Le module dont la plage d’adresses virtuelle contient une adresse donnée est retourné par GetModuleByOffset. Cette méthode peut être utilisée pour rechercher l’index du module en fonction de l’adresse de base du module.
Les méthodes suivantes retournent des informations sur les modules spécifiés par l’adresse de base ou l’index :
Les noms d’un module sont retournés par GetModuleNames et GetModuleNameString.
Les informations de version du module sont retournées par GetModuleVersionInformation.
Certains des paramètres utilisés pour décrire un module sont retournés par GetModuleParameters. Pour plus d’informations sur les paramètres retournés par cette méthode, consultez DEBUG_MODULE_PARAMETERS.
Modules déchargés
Pendant le débogage en mode utilisateur, les modules déchargés sont suivis uniquement dans Windows Server 2003 et les versions ultérieures de Windows. Les versions antérieures de Windows suivaient uniquement les modules déchargés en mode noyau. Lorsqu’ils sont suivis, ils sont indexés après les modules chargés. Par conséquent, toute méthode qui recherche les modules de la cible recherche tous les modules chargés, puis les modules déchargés. Les modules déchargés peuvent être utilisés pour analyser les défaillances provoquées par une tentative d’appel du code déchargé.
Modules synthétiques
Des modules synthétiques peuvent être créés pour étiqueter une région de mémoire. Ces modules ne peuvent pas contenir de symboles réels, mais ils peuvent contenir des symboles synthétiques. La méthode AddSyntheticModule crée un module synthétique. Les modules synthétiques peuvent être supprimés à l’aide de RemoveSyntheticModule. Le rechargement de tous les modules dans la cible supprime tous les modules synthétiques.
Chemin d’accès à l’image
Le chemin d’accès à l’image exécutable est utilisé par le moteur lors de la recherche d’images exécutables.
Le chemin d’accès à l’image exécutable peut se composer de plusieurs répertoires séparés par des points-virgules (;). Ces répertoires sont recherchés dans l’ordre.
Pour obtenir une vue d’ensemble du chemin d’accès de l’image exécutable, consultez Chemin d’accès de l’image exécutable.
Pour ajouter un répertoire au chemin d’accès de l’image exécutable, utilisez la méthode AppendImagePath. L’ensemble du chemin d’accès à l’image exécutable est retourné par GetImagePath et peut être modifié à l’aide de SetImagePath.
Informations supplémentaires
Pour plus d’informations sur les processus et les processus virtuels, consultez Threads et processus.