Uso di DBH

DBH è uno strumento da riga di comando che espone molte delle funzioni nell'API DbgHelp (dbghelp.dll). Può visualizzare informazioni sul contenuto di un file di simboli, visualizzare dettagli specifici dei simboli nel file e cercare i simboli corrispondenti a vari criteri. Per altre informazioni, vedere Libreria della Guida di debug.

La funzionalità fornita da DBH è simile a quella fornita all'interno di WinDbg, KD e CDB da comandi come x (Esamina simboli).

Esecuzione di DBH in modalità interattiva

Si avvia DBH con una semplice riga di comando, in cui si specifica il modulo di destinazione i cui simboli si desidera analizzare. Un modulo di destinazione può essere un programma EXE o un file di simboli PDB. È anche possibile specificare un ID processo (PID) da analizzare. Per la sintassi completa, vedere Opzioni della riga di comando DBH.

All'avvio di DBH, carica i simboli per il modulo specificato e quindi visualizza un prompt in cui è possibile digitare un'ampia gamma di comandi. Per un elenco dei comandi disponibili, vedere Comandi DBH.

Ad esempio, la sequenza seguente avvia DBH specificando il processo di destinazione con ID processo 4672, quindi esegue il comando enumerazione al prompt DBH per visualizzare i simboli corrispondenti a un criterio specifico e quindi esegue il comando q per uscire da 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 

Esecuzione di DBH in modalità batch

Se si vuole eseguire un solo comando DBH, è possibile specificarlo alla fine della riga di comando. In questo modo DBH viene avviato, caricato il modulo specificato, eseguito il comando specificato e quindi chiuso.

Ad esempio, l'esempio precedente può essere sostituito con una singola riga di comando:

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 

Questo metodo di esecuzione di DBH è denominato modalità batch, perché può essere facilmente usato nei file batch. Questa versione della riga di comando può essere seguita anche da una pipe ( | ) che reindirizza l'output DBH a un altro programma.

Specifica della destinazione

DBH può selezionare una destinazione in tre modi: dall'ID processo di un processo in esecuzione, dal nome dell'eseguibile o dal nome del file di simboli. Ad esempio, se è presente esattamente un'istanza di MyProg.exe attualmente in esecuzione, con ID processo 1234, i comandi seguenti sono quasi equivalenti:

C:\> dbh -v -p:1234 
C:\> dbh -v c:\mydir\myprog.exe 
C:\> dbh -v c:\mydir\myprog.pdb 

Una differenza tra questi comandi è che quando si avvia DBH specificando l'ID processo, DBH usa gli indirizzi virtuali effettivi usati da questo processo. Quando si avvia DBH specificando il nome eseguibile o il nome del file di simboli, DBH presuppone che l'indirizzo di base del modulo sia un valore standard, ad esempio 0x01000000. È quindi possibile usare il comando di base per specificare l'indirizzo di base effettivo, spostando così gli indirizzi di tutti i simboli nel modulo.

DBH non è collegato al processo di destinazione nel modo in cui un debugger esegue. DBH non può causare l'inizio o la fine di un processo, né può modificare la modalità di esecuzione del processo. Affinché DBH si connetti a un processo in base all'ID processo, il processo di destinazione deve essere in esecuzione, ma una volta avviato il processo di destinazione, il processo di destinazione può essere terminato e DBH continuerà ad accedere ai relativi simboli.

Simboli decorati e non decorati

Per impostazione predefinita, DBH usa nomi di simboli nondecorati durante la visualizzazione e la ricerca di simboli. Se si disattiva l'opzione simbolo SYMOPT_UNDNAME o si include l'opzione -d nella riga di comando DBH, verranno incluse le decorazioni.

Per informazioni sulle decorazioni dei simboli, vedere Simboli pubblici e privati.

Uscita da DBH

Per uscire da DBH, usare il comando q al prompt dbh.