!for_each_module
L’extension !for_each_module exécute une commande de débogueur une fois pour chaque module chargé.
!for_each_module ["CommandString"]
!for_each_module -?
<Paramètres
CommandString
Spécifie les commandes de débogueur à exécuter une fois pour chaque module dans la liste des modules du débogueur. Si CommandString inclut plusieurs commandes, vous devez les séparer par des points-virgules et placer CommandString entre guillemets. Si vous incluez plusieurs commandes, les commandes individuelles dans CommandString ne peuvent pas contenir de guillemets.
Vous pouvez utiliser les alias suivants dans CommandString ou dans n’importe quel script exécuté par les commandes dans CommandString .
Alias | Type de données | Valeur |
---|---|---|
@#FileVersion |
string |
La version du fichier du module. |
@#ProductVersion |
string |
La version du produit du module. |
@#ModuleIndex |
ULONG |
Le numéro du module. Les modules sont énumérés de manière consécutive, en commençant par zéro. |
@#ModuleName |
string |
Nom du module. Ce nom est généralement le nom de fichier sans l’extension de nom de fichier. Dans certaines situations, le nom du module diffère considérablement du nom du fichier. |
@#ImageName |
string |
Le nom du fichier exécutable, comprenant l’extension du nom de fichier. En règle générale, le chemin complet est inclus en mode utilisateur, mais pas en mode noyau. |
@#LoadedImageName |
string |
Cet alias est identique au nom de l’image sauf si les symboles Microsoft CodeView sont présents. |
@#MappedImageName |
string |
Dans la plupart des cas, cet alias a la valeur NULL. Si le débogueur mappe un fichier image (par exemple, pendant le débogage minidump), cet alias est le nom de l’image mappée. |
@#SymbolFileName |
string |
Chemin d’accès et nom du fichier symbole. Si vous n’avez pas chargé de symboles, cet alias est alors le nom du fichier exécutable. |
@#ModuleNameSize |
ULONG |
Longueur de chaîne de la chaîne de nom de module, plus un. |
@#ImageNameSize |
ULONG |
Longueur de chaîne de la chaîne de nom de l’image, plus un. |
@#LoadedImageNameSize |
ULONG |
Longueur de chaîne de la chaîne de nom de l’image chargée, plus un. |
@#MappedImageNameSize |
ULONG |
Longueur de chaîne de la chaîne de nom de l’image mappée, plus un. |
@#SymbolFileNameSize |
ULONG |
Longueur de chaîne de la chaîne de nom de fichier de symboles, plus un. |
@#Base |
ULONG64 |
L’adresse du début de l’image. |
@#Size |
ULONG |
La taille de l’image en octets. |
@#End |
ULONG64 |
L’adresse de la fin de l’image. |
@#TimeDateStamp |
ULONG |
Date et heure de l’image. Si vous souhaitez développer cette heure et cet horodatage en une date lisible, utilisez la commande .formats (Show Number Formats). |
@#Checksum |
ULONG |
La somme de contrôle (checksum) du module. |
@#Flags |
ULONG |
Les indicateurs du module. Pour obtenir la liste des valeurs DEBUG_MODULE_Xxx , veuillez consulter Dbgeng.h. |
@#SymbolType |
USHORT |
Le type de symbole. Pour obtenir la liste des valeurs DEBUG_SYMTYPE_Xxx , veuillez consulter Dbgeng.h. |
Ces alias sont tous remplacés avant que CommandString ne soit exécuté pour chaque module, et avant toute autre analyse. Les alias sont sensibles à la casse. Ils doivent être précédés et suivis d’un espace, même s’ils sont inclus entre parenthèses. Si vous utilisez la syntaxe des expressions C++, vous devez référencer ces alias comme @@( @#alias).
Ces alias sont uniquement disponibles pendant la durée de vie de l’appel à !for_each_module. Ne les confondez avec les pseudo-registres, les alias à nom fixe ou les alias nommés par des utilisateurs.
-?
Affiche un texte d’aide pour cette extension dans la fenêtre de commande de débogueur.
DLL
Ext.dll
Informations supplémentaires
Pour plus d’informations concernant la façon de définir et d’utiliser des alias comme raccourcis pour entrer des chaînes de caractères (y compris l’utilisation du jeton ${ }), veuillez consulter la section Utilisation des alias.
Notes
Si vous ne spécifiez aucun argument, l’extension !for_each_module affiche des informations générales sur les modules chargés. Ces informations sont similaires aux informations affichées par la commande suivante.
!for_each_module .echo @#ModuleIndex : @#Base @#End @#ModuleName @#ImageName @#LoadedImageName
Pour plus d’informations sur les modules chargés et déchargés, utilisez la commande lm (List Loaded Modules).
Si vous activez la sortie détaillée du débogueur, le débogueur affiche le nombre total de modules chargés et déchargés lorsque l’extension est appelée, et le débogueur affiche des informations détaillées sur chaque module (y compris les valeurs de chaque alias disponible) avant l’exécution de CommandString pour ce module.
Les exemples suivants montrent comment utiliser l’extension !for_each_module . Les commandes suivantes affichent les indicateurs de débogage globaux.
!for_each_module x ${@#ModuleName}!*Debug*Flag*
!for_each_module x ${@#ModuleName}!g*Debug*
La commande suivante case activée pour la corruption binaire dans chaque module chargé, à l’aide de l’extension !chkimg :
!for_each_module !chkimg @#ModuleName
La commande suivante recherche le modèle « MZ » dans chaque image chargée.
!for_each_module s-a @#Base @#End "MZ"
L’exemple suivant illustre l’utilisation de @#FileVersion et @#ProductVersion pour chaque nom de module :
0:000> !for_each_module .echo @#ModuleName fver = @#FileVersion pver = @#ProductVersion
USER32 fver = 6.0.6000.16438 (vista_gdr.070214-1610) pver = 6.0.6000.16438
kernel32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
ntdll fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
notepad fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
WINSPOOL fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
COMCTL32 fver = 6.10 (vista_rtm.061101-2205) pver = 6.0.6000.16386
SHLWAPI fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
msvcrt fver = 7.0.6000.16386 (vista_rtm.061101-2205) pver = 7.0.6000.16386
GDI32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
RPCRT4 fver = 6.0.6000.16525 (vista_gdr.070716-1600) pver = 6.0.6000.16525
SHELL32 fver = 6.0.6000.16513 (vista_gdr.070626-1505) pver = 6.0.6000.16513
ole32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
ADVAPI32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
COMDLG32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386