Penelusuran kesalahan dalam Mode Rakitan
Jika Anda memiliki file sumber C atau C++ untuk aplikasi, Anda dapat menggunakan debugger jauh lebih kuat jika Anda men-debug dalam mode sumber.
Namun, ada banyak kali Anda tidak dapat melakukan penelusuran kesalahan sumber. Anda mungkin tidak memiliki file sumber untuk aplikasi Anda. Anda mungkin sedang menelusuri kesalahan kode orang lain. Anda mungkin belum membangun file yang dapat dieksekusi dengan simbol .pdb penuh. 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 penelusuran kesalahan sumber. Debugger secara otomatis menampilkan konten lokasi memori dan mendaftar saat diakses dan menampilkan alamat penghitung program. Tampilan ini membuat perakitan men-debug alat berharga yang dapat Anda gunakan bersama dengan penelusuran kesalahan sumber.
Kode Pembbongkaran
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 komputer ke bahasa assembly.
Anda dapat menampilkan kode yang dihasilkan (dikenal sebagai kode pembbongkaran) dengan beberapa cara berbeda:
Perintah u (Unassemble) membongkar dan menampilkan bagian bahasa komputer tertentu.
Perintah uf (Unassemble Function) membongkar dan menampilkan fungsi.
Perintah up (Unassemble from Physical Memory) membongkar dan menampilkan bagian tertentu dari bahasa komputer yang telah disimpan dalam memori fisik.
Perintah (Unassemble Real Mode BIOS) Anda membongkar dan menampilkan kode mode nyata 16-bit yang ditentukan.
Perintah ux (Unassemble x86 BIOS) membongkar dan menampilkan instruksi kode BIOS berbasis x86 yang ditetapkan pada alamat tertentu.
(Hanya WinDbg) Jendela pembbongkaran membongkar dan menampilkan bagian bahasa komputer tertentu. jendela ini secara otomatis aktif jika Anda memilih perintah pembbongkaran yang terbuka secara otomatis pada menu jendela . Anda juga dapat membuka jendela ini dengan memilih pembbongkaran pada menu tampilan, menekan alt+7, atau menekan tombol bongkar (alt+7).
Tampilan pembongkaran muncul dalam empat kolom: offset alamat, kode biner, mnemonik bahasa rakitan, dan detail bahasa perakitan. 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 cabang yang masing-masing diambil atau tidak diambil.
Anda dapat menggunakan perintah .asm (Ubah Opsi Pembbongkaran) untuk mengubah cara instruksi yang dibongkar ditampilkan.
Di jendela Disassembly WinDbg, garis yang mewakili penghitung program saat ini disorot. Garis tempat titik henti diatur juga disorot.
Anda juga dapat menggunakan perintah berikut untuk memanipulasi kode perakitan:
Perintah # (Cari Pola Pembbongkaran) mencari wilayah memori untuk pola tertentu. Perintah ini setara dengan mencari empat kolom tampilan pembbongkaran.
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 perakitan 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 menelusuri aplikasi dalam mode perakitan. Dalam mode sumber, jendela Sumber berpindah ke latar depan.
Untuk mengatur mode, Anda dapat melakukan salah satu hal berikut ini:
Gunakan perintah l+, l- (Atur Opsi Sumber) untuk mengontrol mode. Perintah l-t mengaktifkan mode rakitan.
(Hanya WinDbg) Bersihkan perintah Mode Sumber pada menu Debug menyebabkan debugger memasuki mode rakitan. Anda juga dapat memilih tombol Mode sumber nonaktif pada toolbar.
Di WinDbg, saat Anda berada dalam mode assembly, ASM muncul terlihat di bilah status.
Menu pintasan di jendela Pembingkaran WinDbg menyertakan instruksi Sorotan dari perintah 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 Assembly
Jika aplikasi Anda ditulis dalam bahasa assembly, pembbongkaran yang dihasilkan debugger mungkin tidak sama persis dengan kode asli Anda. Secara khusus, NO-OPs dan komentar tidak akan ada.
Jika Anda ingin men-debug kode Anda dengan mereferensikan file .asm asli, Anda harus menggunakan penelusuran kesalahan mode sumber. Anda dapat memuat file assembly seperti file sumber C atau C++. Untuk informasi selengkapnya tentang penelusuran kesalahan semacam ini, lihat Penelusuran kesalahan dalam Mode Sumber.