Sdílet prostřednictvím


Použití DBH

DBH je nástroj příkazového řádku, který zveřejňuje mnoho funkcí v rozhraní DBgHelp API (dbghelp.dll). Může zobrazit informace o obsahu souboru symbolů, zobrazit konkrétní podrobnosti symbolů v souboru a vyhledat v souboru symboly odpovídající různým kritériím. Další informace naleznete v tématu Ladění knihovny nápovědy.

Funkce poskytované DBH se podobá tomu, které poskytuje WinDbg, KD a CDB příkazy, jako je x (Prozkoumat symboly).

Spuštění DBH v interaktivním režimu

DbH spustíte jednoduchým příkazovým řádkem, na kterém zadáte cílový modul, jehož symboly chcete prozkoumat. Cílovým modulem může být program EXE nebo soubor symbolů PDB. Můžete také zadat ID procesu (PID), které se má prošetřit. Úplnou syntaxi najdete v tématu Možnosti Command-Line DBH .

Když se dbH spustí, načte symboly pro zadaný modul a zobrazí výzvu, na které můžete zadat různé příkazy. Seznam dostupných příkazů najdete v tématu Příkazy DBH .

Například následující sekvence spustí DBH zadáním cílového procesu s ID procesu 4672 a potom spustí příkaz výčtu na příkazovém řádku DBH, aby se zobrazily symboly odpovídající určitému vzoru, a potom spustí příkaz q , který ukončí 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 

Spuštění DBH v dávkovém režimu

Pokud chcete spustit jenom jeden příkaz DBH, můžete ho zadat na konci příkazového řádku. To způsobí spuštění DBH, načtení zadaného modulu, spuštění zadaného příkazu a ukončení.

Předchozí příklad může být například nahrazen jedním příkazovým řádkem:

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 

Tato metoda spouštění DBH se nazývá dávkový režim, protože ji lze snadno použít v dávkových souborech. Za touto verzí příkazového řádku může následovat také kanál ( | ), který přesměruje výstup DBH do jiného programu.

Určení cíle

DbH může vybrat cíl třemi způsoby: PODLE ID procesu spuštěného procesu, podle názvu spustitelného souboru nebo názvu souboru symbolů. Pokud je například právě jedna instance MyProg.exe spuštěná, s ID procesu 1234 jsou následující příkazy téměř ekvivalentní:

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

Jedním z rozdílů mezi těmito příkazy je, že když spustíte DBH zadáním ID procesu, DBH používá skutečné virtuální adresy používané tímto procesem. Při spuštění DBH zadáním názvu spustitelného souboru nebo názvu souboru symbolu dbH předpokládá, že základní adresa modulu je standardní hodnota (například 0x01000000). Potom můžete pomocí základního příkazu zadat skutečnou základní adresu, čímž posunete adresy všech symbolů v modulu.

DbH se nepřipojit k cílovému procesu způsobem, který ladicí program provede. DbH nemůže způsobit zahájení nebo ukončení procesu ani nemůže změnit způsob spuštění procesu. Aby se DBH mohl připojit k procesu podle ID procesu, musí být cílový proces spuštěný, ale jakmile dbH spustí cílový proces, může být ukončen a DBH bude nadále přistupovat ke svým symbolům.

Dekorované a nezakódované symboly

DbH ve výchozím nastavení používá při zobrazení a hledání symbolů nepojištěné názvy symbolů. Pokud vypnete volbu symbolu SYMOPT_UNDNAME nebo zahrnete volbu -d na příkazovém řádku DBH, budou zahrnuty ornamenty.

Informace o dekoracích symbolů naleznete v tématu Veřejné a soukromé symboly.

Ukončení DBH

K ukončení dbH použijte příkaz q na příkazovém řádku DBH.