Partager via


!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