Utilisation des commandes d’extension du débogueur
L’utilisation des commandes d’extension du débogueur est très similaire à l’utilisation des commandes du débogueur. La commande est tapée dans la fenêtre Commande du débogueur, produisant une sortie dans cette fenêtre ou une modification de l’application cible ou de l’ordinateur cible.
Une commande d’extension de débogueur réelle est un point d’entrée dans une DLL appelée par le débogueur.
Les extensions du débogueur sont appelées par la syntaxe suivante :
! [module.]extension [arguments]
Le nom du module ne doit pas être suivi de l’extension de nom de fichier .dll. Si le module inclut un chemin d’accès complet, la limite de taille de chaîne par défaut est de 255 caractères.
Si le module n’a pas déjà été chargé, il est chargé dans le débogueur à l’aide d’un appel à LoadLibrary(module). Une fois que le débogueur a chargé la bibliothèque d’extensions, il appelle la fonction GetProcAddress pour localiser le nom de l’extension dans le module d’extension. Le nom de l’extension respecte la casse et doit être entré exactement comme il apparaît dans le fichier .def du module d’extension. Si l’adresse de l’extension est trouvée, l’extension est appelée.
Ordre de recherche
Si le nom du module n’est pas spécifié, le débogueur recherche les modules d’extension chargés pour cette exportation.
L’ordre de recherche par défaut est le suivant :
Modules d’extension qui fonctionnent avec tous les systèmes d’exploitation et dans les deux modes : Dbghelp.dll et winext\ext.dll.
Module d’extension qui fonctionne dans tous les modes, mais qui est spécifique au système d’exploitation. Pour Windows XP et versions ultérieures de Windows, il s’agit de winxp\exts.dll.
Module d’extension qui fonctionne avec tous les systèmes d’exploitation, mais qui est spécifique au mode. Pour le mode noyau, il s’agit de winext\kext.dll. Pour le mode utilisateur, il s’agit de winext\uext.dll.
Module d’extension spécifique au système d’exploitation et propre au mode. Le tableau suivant spécifie ce module.
Mode utilisateur | Mode noyau |
---|---|
winxp \ ntsdexts.dll | winxp \ kdexts.dll |
Lorsqu’un module d’extension est déchargé, il est supprimé de la chaîne de recherche. Lorsqu’un module d’extension est chargé, il est ajouté au début de l’ordre de recherche. La commande .setdll (Set Default Extension DLL) peut être utilisée pour promouvoir n’importe quel module en haut de la chaîne de recherche. À l’aide de cette commande à plusieurs reprises, vous pouvez contrôler complètement la chaîne de recherche.
Utilisez la commande .chain (List Debugger Extensions) pour afficher la liste de tous les modules d’extension chargés dans leur ordre de recherche actuel.
Si vous tentez d’exécuter une commande d’extension qui n’est pas dans l’un des modules d’extension chargés, vous obtiendrez un message d’erreur Export Not Found.