Melakukan Local Kernel Debugging Di Windows 7


Kernel debugging adalah suatu proses dimana seseorang men-debug sistem operasi secara keseluruhan, bukan sebuah aplikasi tunggal.   Selain berguna untuk mencari tahu penyebab kesalahan sistem operasi, kernel debugging juga sering dimanfaatkan oleh programmer driver.   Debugging Tools for Windows yang dapat di-download secara gratis telah menyediakan dua debugger yang dapat dipakai: kd.exe yang berbasis command line dan windbg.exe yang berbasis GUI.   Pada kesempatan ini, saya akan memakai windbg.exe.   Walaupun tools ini berbasis GUI, penggunanya tetap perlu beradaptasi dengan sekian banyak perintah yang dimilikinya.   Visual Studio 2013 yang akan dirilis sebentar lagi memiliki peningkatan di bagian debugging, dimana penggunanya kini dapat melakukan kernel debugging langsung dari Visual Studio.   Sayangnya untuk saat ini saya masih belum memiliki kesempatan mencoba memakai Visual Studio 2013, sehingga saya harus betah dengan windbg.exe.

Sebelum saya dapat melakukan kernel debugging pada sebuah sistem operasi Windows, saya harus terlebih dahulu mengaktifkan debugging mode untuk sistem operasi tersebut.   Salah satu caranya adalah dengan menekan tombol F8 pada pertama kali komputer dinyalakan (setelah proses BIOS).    Akan muncul Windows Advanced Options Menu, dimana saya harus memilih Debugging Mode seperti yang terlihat pada gambar berikut ini:

Mengaktifkan modus debugging

Mengaktifkan modus debugging

Setelah itu, desktop Windows akan muncul seperti biasanya.    Saya perlu memastikan bahwa environment variable _NT_SYMBOL_PATH dengan lokasi yang berisi debugging symbols (baca di Menyiapkan dan Memakai Windows debugging symbols).   Cara membuat environment variable baru adalah dengan mengetik “edit system environment variable” di Start menu Windows 7, pilih item di Control Panel, kemudian pada dialog System Properties yang muncul, klik tombol Environment Variables….   Kemudian klik pada tombol New… di System variables untuk membuat environment variable baru bernama _NT_SYMBOL_PATH dengan nilai berupa lokasi yang berisi debugging symbols, misalnya srv*C:\symbols\*http://msdl.microsoft.com/download/symbols.

Kemudian saya mencari windbg.exe di lokasi instalasi Debugging Tools for Windows (secara default terletak di C:\Program Files\Debugging Tools for Windows).   Saya harus menjalankan program tersebut sebagai administrator dengan cara men-klik kanan icon file dan memilih Run as Administrator.   Saya kemudian memilih menu File, Kernel Debug….   Pada dialog yang muncul, saya memilih tab Local dan men-klik tombol OK seperti yang terlihat pada gambar berikut ini:

Memulai local kernel debugging

Memulai local kernel debugging

Setelah menjawab dialog Save information for workspace?, akan muncul sebuah window dimana saya dapat memberikan perintah debugging, seperti yang terlihat pada gambar berikut ini:

Tampilan setelah debugger terhubung dengan target

Tampilan setelah debugger terhubung dengan target

Ini adalah apa yang disebut sebagai local kernel debugging dimana saya men-debug sebuah sistem operasi yang sama (dari sistem operasi tersebut).   Beberapa perintah debugging tidak dapat bekerja pada modus ini.   Salah satu hal yang menarik yang dapat saya lakukan saat ini adalah melihat isi memori.   Saya senang meracik spesifikasi komputer sendiri, jadi ada baiknya saya mengetahui apa isi RAM (ini adalah komponen komputer yang bentuknya seperti kepingan panjang dengan kapasitas umum 2GB, 4GB atau 8GB) di komputer saya saat ini.   Untuk melihat isi 1 KiB pertama dari RAM (bila baca di buku arsitektur komputer, lokasi paling awal dari memori selalu di-isi dengan Interrupt Vector Table/IVT, tapi alangkah baiknya bila saya bisa melihat sendiri struktur tersebut), saya dapat menggunakan perintah !db 0x0 L 400 seperti yang terlihat pada gambar berikut ini:

Melihat isi memory 1 KiB pertama

Melihat isi memory 1 KiB pertama

Bila saya memberikan perintah yang tidak didukung, seperti melihat isi register, saya akan memperoleh pesan kesalahan seperti berikut ini:

lkd> r
     ^ Operation not supported in current debug session 'r'

Untuk mengatasi hal tersebut, saya dapat menggunakan tool LiveKD dari Sysinternals.   Setelah men-download paket program dari Sysinternals, saya dapat menjalankan LiveKD seperti pada perintah berikut ini (sesuaikan lokasi direktori yang dipakai):

C:\Sysinternals> livekd -w

LiveKD akan membuat sebuah crash dump untuk kondisi saat ini, lalu menjalankan WinDbg sehingga saya dapat bereksperimen dengan crash dump tersebut.   Sekarang, saya dapat melihat isi register seperti yang terlihat pada gambar berikut ini:

Isi Register Dapat Dilihat Setelah Memakai LiveKD

Isi Register Dapat Dilihat Setelah Memakai LiveKD

Untuk memperoleh status terbaru, saya perlu menutup WinDbg dimana LiveKD akan bertanya apakah saya ingin kembali menjalankan WinDbg dengan crash dump terbaru.   Cara ini agak repot dan tidak selalu dapat dipakai untuk segala jenis troubleshooting, tapi setidaknya lumayan berguna.

Skenario yang lebih umum adalah melakukan debugging dengan menggunakan dua komputer berbeda. Kedua komputer tersebut terhubung melalui null serial cable, kabel Firewire, atau kabel USB (kabel khusus debugging). Komputer yang akan di-debug disebut sebagai target; sementara itu komputer yang menjalankan debugger (men-debug) disebut sebagai host.   Mencari komputer atau notebook dengan serial cable sudah semakin sulit saat ini.   Perangkat usb-to-serial converter tidak dapat dipakai di sistem target karena serial port tersebut tidak akan terdeteksi sebelum driver USB disajikan.  Walaupun demikian, usb-to-serial boleh dipakai di sistem host (yang melakukan koneksi ke target).  Sementara itu, bila ingin memakai USB, dibutuhkan kabel USB khusus!!  Sangat ribet jadinya bukan?  Ingin memakai serial cable tapi tidak ada port-nya, ingin memakai port USB tapi tidak ada USB debug cable.   Kabar gembiranya, di Windows 8, kernel debugging dapat dilakukan dengan melalui koneksi jaringan (kabelnya murah dan port-nya sering tersedia).

Perihal Solid Snake
I'm nothing...

One Response to Melakukan Local Kernel Debugging Di Windows 7

  1. Ping-balik: Melakukan Kernel Debugging Pada Sistem Operasi Windows Di Virtual Machine | The Solid Snake

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: