Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jika Anda memiliki file sumber C atau C++ untuk aplikasi Anda, Anda dapat menggunakan debugger jauh lebih kuat jika Anda men-debug dalam mode sumber.
Namun, seringkali Anda tidak dapat melakukan debugging sumber. Anda mungkin tidak memiliki file sumber untuk aplikasi Anda. Anda mungkin sedang melakukan debugging pada kode orang lain. Anda mungkin belum membuat file yang dapat dieksekusi dengan simbol .pdb lengkap. Dan bahkan jika Anda dapat melakukan penelusuran kesalahan sumber pada aplikasi, Anda mungkin harus melacak rutinitas Microsoft Windows yang dipanggil aplikasi Anda atau yang digunakan untuk memuat aplikasi Anda.
Dalam situasi ini, Anda harus men-debug dalam mode perakitan. Selain itu, mode perakitan memiliki banyak fitur berguna yang tidak ada dalam debugging sumber. Debugger secara otomatis menampilkan isi lokasi memori dan register saat diakses, serta menampilkan alamat program counter. Tampilan ini menjadikan debugging assembly alat yang berharga yang dapat Anda gunakan bersama dengan debugging kode sumber.
Kode Pembongkaran
Debugger terutama menganalisis kode biner yang dapat dieksekusi. Alih-alih menampilkan kode ini dalam format mentah, debugger membongkar kode ini. Artinya, debugger mengonversi kode dari bahasa mesin ke bahasa assembly.
Anda dapat menampilkan kode yang dihasilkan (dikenal sebagai kode pembongkaran) dengan beberapa cara berbeda:
Perintah u (Pembongkaran) membongkar dan menampilkan bagian bahasa mesin tertentu.
Perintah uf (Unassemble Function) membongkar dan menampilkan fungsi.
Perintah up (Unassemble from Physical Memory) membongkar dan menampilkan bagian tertentu dari bahasa mesin yang telah disimpan dalam memori fisik.
Perintah ur (Unassemble Real Mode BIOS) memisahkan dan menampilkan kode mode nyata asli 16-bit tertentu.
Perintah ux (Unassemble x86 BIOS) membongkar dan menampilkan instruksi kode BIOS berbasis x86 yang ditetapkan pada alamat tertentu.
(Hanya WinDbg) Jendela pembongkaran membongkar dan menampilkan bagian bahasa komputer tertentu. jendela ini secara otomatis aktif jika Anda memilih perintah membuka disassembly secara otomatis pada menu jendela. Anda juga dapat membuka jendela ini dengan memilih pembongkaran pada menu tampilan, menekan alt+7, atau menekan tombol pembongkaran (alt+7).
Tampilan pembongkaran muncul dalam empat kolom: offset alamat, kode biner, mnemonic bahasa assembly, dan detail bahasa assembly. Contoh berikut menunjukkan tampilan ini.
0040116b 45 inc ebp
0040116c fc cld
0040116d 8945b0 mov eax,[ebp-0x1c]
Di sebelah kanan baris yang mewakili penghitung program saat ini, tampilan menunjukkan nilai lokasi memori atau register apa pun yang sedang diakses. Jika baris ini berisi instruksi cabang, notasi [br=1] atau [br=0] muncul. Notasi ini menunjukkan apakah suatu cabang diambil atau tidak diambil, masing-masing.
Anda dapat menggunakan perintah .asm (Ubah Opsi Pembongkaran) untuk mengubah bagaimana instruksi yang dibongkar ditampilkan.
Di jendela Disassembly WinDbg, garis yang mewakili penghitung program saat ini disorot. Garis yang dipasangi titik henti juga disorot.
Anda juga dapat menggunakan perintah berikut untuk memanipulasi kode perakitan:
Perintah # (Cari Pola Pembongkaran) mencari wilayah memori untuk pola tertentu. Perintah ini setara dengan mencari empat kolom tampilan disasemble.
Perintah (Merakit) dapat mengambil instruksi perakitan dan menerjemahkannya ke dalam kode mesin biner.
Mode Rakitan dan Mode Sumber
Debugger memiliki dua mode operasi yang berbeda: mode perakitan dan mode sumber.
Ketika Anda melangkah tunggal melalui aplikasi, ukuran satu langkah adalah satu baris kode rakitan atau satu baris kode sumber, tergantung pada mode.
Beberapa perintah membuat tampilan data yang berbeda tergantung pada mode .
Di WinDbg, jendela Disassembly secara otomatis berpindah ke latar depan saat Anda menjalankan atau melangkah melalui aplikasi dalam mode assembly. Dalam mode sumber, jendela Sumber berpindah ke latar depan.
Untuk mengatur mode, Anda dapat melakukan salah satu hal berikut:
Gunakan perintah l+, l- (Atur Opsi Sumber) untuk mengontrol mode. Perintah l-t mengaktifkan mode rakitan.
(Hanya WinDbg) Kosongkan perintah Mode Sumber pada menu Debug untuk menyebabkan debugger memasuki mode perakitan. Anda juga dapat memilih tombol Mode sumber nonaktif pada toolbar.
Di WinDbg, saat Anda berada dalam mode rakitan, ASM muncul terlihat di bilah status.
Menu pintasan di jendela Pembongkaran WinDbg menyertakan perintah Sorot instruksi dari baris sumber saat ini. Perintah ini menyoroti semua instruksi yang sesuai dengan baris sumber saat ini. Seringkali, satu baris sumber sesuai dengan beberapa instruksi perakitan. Jika kode telah dioptimalkan, instruksi perakitan ini mungkin tidak berturut-turut. Perintah Sorot instruksi dari baris sumber saat ini memungkinkan Anda menemukan semua instruksi yang dirakit dari baris sumber saat ini.
File Sumber Bahasa Rakitan
Jika aplikasi Anda ditulis dalam bahasa assembly, pembongkaran yang dihasilkan debugger mungkin tidak sama persis dengan kode asli Anda. Secara khusus, NO-OPs dan komentar tidak akan ada.
Jika Anda ingin melakukan debugging kode Anda dengan merujuk file .asm asli, Anda harus menggunakan debugging mode sumber kode. Anda dapat memuat file rakitan seperti file sumber C atau C++. Untuk informasi selengkapnya tentang penelusuran kesalahan semacam ini, lihat Penelusuran kesalahan dalam Mode Sumber.