GDB stub on kvm, 復活の巻
以前qemu+kvmに実装されているGDBStubに関する記事を書いた段階では、kvm に実装されている GDBstub が壊れてしまっていて、使えないという状態になっていました. しかし、本日 git から最新版を落としてきてビルド、動作させたところ、GDBstub が正常に動作するようになっていました!というわけで、以下はkvmのレポジトリから最新版を落としてきて、ビルド、GDB にアタッチするまでの作業メモです.
コンパイルとインストール
#/bin/sh # カーネルモジュールのビルド. git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-kmod.git cd kvm-kmod git submodule update --init ./configure make sync make sudo make install # Qemu のビルド. git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git cd qemu-kvm ./configure --prefix=/usr/local/kvm/git make sudo make install
KVMを立ち上げる.
qemu に -s オプションをつけることで、TCP の localhost:1234 で待ち受けることができます.
# ディスクイメージ作るのが面倒なのでカーネルイメージから直ブートする. # 途中からHDDがないのでこけるが、gdbのテストには十分. # kernel と initrd のパスは自分で指定すること. /usr/local/kvm/bin/qemu-system-x86 -hda /dev/null -s -kernel /path/to/linux-2.6/arch/x86/boot/bzImage -initrd /path/to/initrd.img
GDB でアタッチ
さあ、いよいよGDBでアタッチです!
gdb (gdb) file /path/to/linux-2.6/vmlinux (gdb) attach Remote debugging using localhost:1234 [New Thread 1] native_calibrate_tsc () at arch/x86/kernel/tsc.c:155 155 while ((inb(0x61) & 0x20) == 0) { (gdb) b printk Breakpoint 1 at 0xc04a7659: file kernel/printk.c, line 599. (gdb) c Continuing. Breakpoint 1, printk (fmt=0xc057e988 "<6>TSC: PIT calibration confirmed by %s.\n") at kernel/printk.c:599 599
キタ━━━━━━(゜∀゜)━━━━━━!!!
これで快適にカーネルハックできますね!!ぜひ皆さんもためしてみてください!