Compartir a través de


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.