Bagikan melalui


Menggunakan DBH

DBH adalah alat baris perintah yang mengekspos banyak fungsi dalam API DbgHelp (dbghelp.dll). Ini dapat menampilkan informasi tentang konten file simbol, menampilkan detail spesifik simbol dalam file, dan mencari melalui file untuk simbol yang cocok dengan berbagai kriteria. Untuk informasi selengkapnya, lihat Pustaka Bantuan Debug.

Fungsionalitas yang disediakan oleh DBH mirip dengan yang disediakan dalam WinDbg, KD, dan CDB oleh perintah seperti x (Examine Symbols).

Menjalankan DBH dalam Mode Interaktif

Anda memulai DBH dengan baris perintah sederhana, di mana Anda menentukan modul target yang simbolnya ingin Anda selidiki. Modul target dapat berupa program EXE atau file simbol PDB. Anda juga dapat menentukan ID proses (PID) untuk diselidiki. Lihat Opsi Baris Perintah DBH untuk sintaks lengkapnya.

Ketika DBH dimulai, DBH memuat simbol untuk modul yang ditentukan, lalu memberi Anda perintah di mana Anda dapat mengetik berbagai perintah. Lihat Perintah DBH untuk daftar perintah yang tersedia.

Misalnya, urutan berikut memulai DBH dengan menentukan proses target dengan ID proses 4672, lalu menjalankan perintah enum pada prompt DBH untuk menampilkan simbol yang cocok dengan pola tertentu, lalu menjalankan perintah q untuk keluar dari 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 

Menjalankan DBH dalam Mode Batch

Jika Anda hanya ingin menjalankan satu perintah DBH, Anda dapat menentukannya di akhir baris perintah. Hal ini menyebabkan DBH dimulai, memuat modul yang ditentukan, menjalankan perintah yang ditentukan, lalu keluar.

Misalnya, contoh sebelumnya dapat diganti dengan satu baris perintah:

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 

Metode menjalankan DBH ini disebut mode batch, karena dapat dengan mudah digunakan dalam file batch. Versi baris perintah ini juga dapat diikuti oleh pipa ( | ) yang mengalihkan output DBH ke program lain.

Menentukan Target

DBH dapat memilih target dengan tiga cara: dengan ID proses dari proses yang sedang berjalan, dengan nama yang dapat dieksekusi, atau dengan nama file simbol. Misalnya, jika ada tepat satu instans MyProg.exe yang saat ini berjalan, dengan ID proses 1234, maka perintah berikut hampir setara:

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

Salah satu perbedaan antara perintah ini adalah ketika Anda memulai DBH dengan menentukan ID proses, DBH menggunakan alamat virtual aktual yang digunakan oleh proses ini. Saat Anda memulai DBH dengan menentukan nama yang dapat dieksekusi atau nama file simbol, DBH mengasumsikan bahwa alamat dasar modul adalah nilai standar (misalnya, 0x01000000). Anda kemudian dapat menggunakan perintah dasar untuk menentukan alamat dasar yang sebenarnya, sehingga menggeser alamat semua simbol dalam modul.

DBH tidak melekat pada proses target dengan cara yang dilakukan debugger. DBH tidak dapat menyebabkan proses dimulai atau berakhir, juga tidak dapat mengubah cara proses tersebut berjalan. Agar DBH melampirkan ke proses dengan ID prosesnya, proses target harus berjalan, tetapi setelah DBH dimulai, proses target dapat dihentikan dan DBH akan terus mengakses simbolnya.

Simbol Yang Didekorasi dan Tidak Terdekorasi

Secara default, DBH menggunakan nama simbol yang tidak terdekorasi saat menampilkan dan mencari simbol. Jika Anda menonaktifkan opsi simbol SYMOPT_UNDNAME , atau menyertakan opsi -d pada baris perintah DBH, dekorasi akan disertakan.

Untuk informasi tentang dekorasi simbol, lihat Simbol Publik dan Privat.

Keluar dari DBH

Untuk keluar dari DBH, gunakan perintah q pada prompt DBH.