Melakukan Kernel Debugging Pada Sistem Operasi Windows Di Virtual Machine


Pada artikel Melakukan Local Kernel Debugging Di Windows 7, saya melakukan local kernel debugging.   Tapi kernel debugging lebih sering dilakukan dengan dua komputer terpisah, dimana sebuah komputer berperan sebagai host dan yang lain sebagai target.   Dengan demikian, komputer host dapat menghentikan Windows di komputer target, lalu menelusuri kesalahan baris per baris.   Kali ini saya akan mencoba melakukan kernel debugging dengan dua sistem operasi Windows terpisah, tetapi target-nya adalah Windows 7 di virtual machine yang dijalankan dari dalam komputer host.   Dengan demikian, saya tidak perlu mengeluarkan biaya untuk membeli USB debug cable, mencari notebook/komputer lain dengan port serial (COM) atau membeli adapter Firewire.

Saya akan memakai Oracle VirtualBox untuk mensimulasikan sebuah komputer maya dengan sistem operasi Windows 7 SP 1.   Saya perlu menambahkan sebuah port serial pada komputer maya tersebut.   Caranya adalah men-klik tombol Settings, kemudian memilih Serial Ports pada dialog yang muncul.   Saya akan mengisinya dengan seperti yang terlihat pada gambar berikut ini:

Membuat port serial maya di VirtualBox

Membuat port serial maya di VirtualBox

Pada konfigurasi tersebut, sebuah port serial dengan nomor COM1 akan dipetakan pada sebuah named pipe di sistem operasi host dengan nama //./pipe/win7sp1.   Dengan demikian, komputer host dapat mengirim atau menerima pesan pada COM1 di komputer maya melalui named pipe tersebut.   Saya kemudian men-klik tombol OK untuk selesai.

Sebelum menyalakan komputer maya, saya terlebih dahulu memberikan sebuah perintah untuk meningkatkan kinerja baca tulis serial port di VirtualBox:

C:\Program Files\Oracle\VirtualBox>vboxmanage list vms
"Windows 7 For Kernel Debugging" {fdb66984-a4dd-41c3-8549-69e21ff554bc}

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata {fdb66984-a4dd-41c3-8549-69e21ff554bc} "VBoxInternal/Devices/serial/0/Config/YieldOnLSRRead" 1

C:\Program Files\Oracle\VirtualBox>VBoxmanage getextradata {fdb66984-a4dd-41c3-8549-69e21ff554bc} "VBoxInternal/Devices/serial/0/Config/YieldOnLSRRead"
Value: 1

Pada perintah di atas, saya perlu sebelumnya masuk ke direktori dimana saya men-install VirtualBox.   Selain itu, saya juga perlu menyesuaikan nama virtual machine yang akan diatur.

Setelah ini, saya menyalakan virtual machine tersebut yang mewakili target.   Saya kemudian membuka device manager di komputer maya dan memastikan bahwa sebuah serial port dengan nama COM1 telah terdaftar, seperti yang terlihat pada gambar berikut ini:

Memastikan COM1 telah terdaftar

Memastikan COM1 telah terdaftar

Selain itu, saya juga dapat memerika apakah named pipe sudah dibuat di komputer host dengan menggunakan tool pipelist.exe dari SysinternalsSuite.   Sebagai contoh, berikut ini adalah hasil yang saya peroleh saat mengerjakan pipelist.exe di komputer host:

C:\SysinternalsSuite>pipelist

PipeList v1.01
by Mark Russinovich
http://www.sysinternals.com

Pipe Name                                    Instances       Max Instances
---------                                    ---------       -------------
...
win7sp1                                           1                1

Langkah berikutnya adalah mengaktifkan modus debugging di sistem operasi target di komputer maya.   Saya me-restart komputer maya (virtual machine) dan menekan tombol F8 sesaat setelah layar BIOS, kemudian memilih debugging mode seperti yang terlihat pada gambar berikut ini:

Mengaktifkan debugging mode di target

Mengaktifkan debugging mode di target

Setelah itu, saya akan menjalankan windbg.exe di komputer host sebagai administrator.   Kemudian saya memilih menu File, Kernel Debug…. Saya mengisi dialog yang muncul seperti pada gambar berikut ini:

Memulai kernel debugging dari host

Memulai kernel debugging dari host

Tidak lupa saya juga mengaktifkan verbose output dengan memilih menu View, Verbose Output.   Pada percobaan saya, koneksi tidak langsung dilakukan, sehingga saya perlu me-restart Windows di komputer maya (virtual machine) terlebih dahulu (tetap memilih debugging mode).   Setelah itu, pada WinDbg akan terlihat pesan seperti ‘Connected to Windows 7‘.   Untuk memulai proses debugging, saya perlu menghentikan eksekusi Windows di target dengan memilih menu Debug, Break di WinDbg dimana hasilnya akan terlihat seperti pada gambar berikut ini:

Memulai proses debugging

Memulai proses debugging

Setelah ini, Windows di komputer target akan berhenti dan terlihat tidak bekerja.  Tujuannya adalah agar saya dapat memeriksanya dari komputer host.   Saya dapat segera memberikan perintah di WinDbg untuk melakukan debugging, seperti yang terlihat pada gambar berikut ini:

Pekerjaan debugging dapat segera dimulai

Pekerjaan debugging dapat segera dimulai

Perihal Solid Snake
I'm nothing...

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: