Utilisation de DBH
DBH est un outil en ligne de commande qui expose de nombreuses fonctions dans l’API DbgHelp (dbghelp.dll). Il peut afficher des informations sur le contenu d’un fichier de symboles, afficher des détails spécifiques des symboles dans le fichier et rechercher des symboles correspondant à différents critères. Pour plus d’informations, consultez La bibliothèque d’aide de débogage.
La fonctionnalité fournie par DBH est similaire à celle fournie dans WinDbg, KD et CDB par commandes telles que x (Examiner les symboles).
Exécution de DBH en mode interactif
Vous démarrez DBH avec une ligne de commande simple, sur laquelle vous spécifiez le module cible dont vous souhaitez examiner les symboles. Un module cible peut être un programme EXE ou un fichier de symboles PDB. Vous pouvez également spécifier un ID de processus (PID) à examiner. Consultez les options de ligne de commande DBH pour obtenir la syntaxe complète.
Au démarrage de DBH, il charge les symboles du module spécifié, puis vous présente une invite à laquelle vous pouvez taper une variété de commandes. Consultez les commandes DBH pour obtenir la liste des commandes disponibles.
Par exemple, la séquence suivante démarre DBH en spécifiant le processus cible avec l’ID de processus 4672, puis exécute la commande enum à l’invite DBH pour afficher des symboles correspondant à un modèle spécifique, puis exécute la commande q pour quitter DBH :
C:\> dbh -p:4672
400000 : TimeTest
77820000 : ntdll
77740000 : kernel32
pid:4672 mod:TimeTest[400000]: enum TimeTest!ma*
index address name
1 42cc56 : main
3 415810 : malloc
5 415450 : mainCRTStartup
pid:4672 mod:TimeTest[400000]: q
goodbye
Exécution de DBH en mode Batch
Si vous souhaitez exécuter une seule commande DBH, vous pouvez la spécifier à la fin de la ligne de commande. Cela entraîne le démarrage de DBH, le chargement du module spécifié, l’exécution de la commande spécifiée, puis la sortie.
Par exemple, l’exemple précédent peut être remplacé par une seule ligne de commande :
C:\> dbh -p:4672 enum TimeTest!ma*
400000 : TimeTest
77820000 : ntdll
77740000 : kernel32
index address name
1 42cc56 : main
3 415810 : malloc
5 415450 : mainCRTStartup
Cette méthode d’exécution de DBH est appelée mode batch, car elle peut être facilement utilisée dans les fichiers batch. Cette version de la ligne de commande peut également être suivie d’un canal ( | ) qui redirige la sortie DBH vers un autre programme.
Spécification de la cible
DBH peut sélectionner une cible de trois façons : par l’ID de processus d’un processus en cours d’exécution, par le nom de l’exécutable ou par le nom du fichier de symboles. Par exemple, s’il existe exactement une instance de MyProg.exe en cours d’exécution, avec l’ID de processus 1234, les commandes suivantes sont presque équivalentes :
C:\> dbh -v -p:1234
C:\> dbh -v c:\mydir\myprog.exe
C:\> dbh -v c:\mydir\myprog.pdb
Une différence entre ces commandes est que lorsque vous démarrez DBH en spécifiant l’ID de processus, DBH utilise les adresses virtuelles réelles utilisées par ce processus. Lorsque vous démarrez DBH en spécifiant le nom exécutable ou le nom du fichier de symboles, DBH suppose que l’adresse de base du module est une valeur standard (par exemple, 0x01000000). Vous pouvez ensuite utiliser la commande de base pour spécifier l’adresse de base réelle, ce qui déplace les adresses de tous les symboles du module.
DBH ne s’attache pas au processus cible de la façon dont un débogueur le fait. DBH ne peut pas entraîner le début ou la fin d’un processus, ni modifier la façon dont ce processus s’exécute. Pour que DBH s’attache à un processus par son ID de processus, le processus cible doit être en cours d’exécution, mais une fois que DBH a démarré le processus cible peut être arrêté et DBH continue d’accéder à ses symboles.
Symboles décorés et non décorés
Par défaut, DBH utilise des noms de symboles non codés lors de l’affichage et de la recherche de symboles. Si vous désactivez l’option de symbole SYMOPT_UNDNAME ou si vous incluez l’option -d sur la ligne de commande DBH, les décorations seront incluses.
Pour plus d’informations sur les décorations de symboles, consultez Symboles publics et privés.
Sortie de DBH
Pour quitter DBH, utilisez la commande q à l’invite DBH.