Uso de DBH
DBH es una herramienta de línea de comandos que expone muchas de las funciones de la API dbgHelp (dbghelp.dll). Puede mostrar información sobre el contenido de un archivo de símbolos, mostrar detalles específicos de los símbolos en el archivo y buscar símbolos que coincidan con varios criterios. Para obtener más información, consulte Biblioteca de ayuda de depuración.
La funcionalidad proporcionada por DBH es similar a la proporcionada en WinDbg, KD y CDB por comandos como x (Examinar símbolos).
Ejecución de DBH en modo interactivo
Inicie DBH con una línea de comandos sencilla, en la que especifique el módulo de destino cuyos símbolos desea investigar. Un módulo de destino puede ser un programa EXE o un archivo de símboloS PDB. También puede especificar un identificador de proceso (PID) para investigar. Consulte Opciones de línea de comandos de DBH para obtener la sintaxis completa.
Cuando se inicia DBH, carga los símbolos del módulo especificado y, a continuación, le presenta un símbolo en el que puede escribir una variedad de comandos. Consulte Comandos de DBH para obtener una lista de los comandos disponibles.
Por ejemplo, la siguiente secuencia inicia DBH especificando el proceso de destino con el identificador de proceso 4672 y, a continuación, ejecuta el comando enum en el símbolo del símbolo de DBH para mostrar símbolos que coinciden con un patrón específico y, a continuación, ejecuta el comando q para salir de 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
Ejecución de DBH en modo por lotes
Si desea ejecutar solo un solo comando DBH, puede especificarlo al final de la línea de comandos. Esto hace que DBH se inicie, cargue el módulo especificado, ejecute el comando especificado y, a continuación, salga.
Por ejemplo, el ejemplo anterior podría reemplazarse por una sola línea de comandos:
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
Este método de ejecución de DBH se denomina modo por lotes, ya que se puede usar fácilmente en archivos por lotes. Esta versión de la línea de comandos también puede ir seguida de una canalización ( | ) que redirige la salida de DBH a otro programa.
Especificación del destino
DBH puede seleccionar un destino de tres maneras: por el identificador de proceso de un proceso en ejecución, por el nombre del archivo ejecutable o por el nombre del archivo de símbolos. Por ejemplo, si hay exactamente una instancia de MyProg.exe actualmente en ejecución, con el identificador de proceso 1234, los siguientes comandos son casi equivalentes:
C:\> dbh -v -p:1234
C:\> dbh -v c:\mydir\myprog.exe
C:\> dbh -v c:\mydir\myprog.pdb
Una diferencia entre estos comandos es que al iniciar DBH especificando el identificador de proceso, DBH usa las direcciones virtuales reales que usa este proceso. Al iniciar DBH especificando el nombre ejecutable o el nombre del archivo de símbolos, DBH asume que la dirección base del módulo es un valor estándar (por ejemplo, 0x01000000). A continuación, puede usar el comando base para especificar la dirección base real, desplazando así las direcciones de todos los símbolos del módulo.
DBH no se asocia al proceso de destino de la manera en que lo hace un depurador. DBH no puede hacer que un proceso comience o finalice, ni puede modificar cómo se ejecuta ese proceso. Para que DBH se adjunte a un proceso por su identificador de proceso, el proceso de destino debe estar en ejecución, pero una vez iniciado DBH, el proceso de destino se puede finalizar y DBH seguirá accediendo a sus símbolos.
Símbolos decorados y sin codificar
De forma predeterminada, DBH usa nombres de símbolos no codificados al mostrar y buscar símbolos. Si desactiva la opción de símbolo de SYMOPT_UNDNAME o incluye la opción -d en la línea de comandos de DBH, se incluirán decoraciones.
Para obtener información sobre las decoraciones de símbolos, vea Símbolos públicos y privados.
Salir de DBH
Para salir de DBH, use el comando q en el símbolo del sistema de DBH.