2009-12-11
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
キタ━━━━━━(゜∀゜)━━━━━━!!!
これで快適にカーネルハックできますね!!ぜひ皆さんもためしてみてください!
トラックバック - http://d.hatena.ne.jp/big-eyed-hamster/20091211/1260540819
リンク元
- 230 http://www.e-hdk.com/hina/
- 15 http://twitter.com/oza_x86
- 8 http://twitter.com/
- 3 http://twitter.com/yuzorock
- 3 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=0rh&num=100&q=プリプロセッサ+gcc&btnG=検索&lr=lang_ja&aq=f&oq=
- 3 http://www.google.co.jp/search?q=big-eyed-hamster&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 2 http://bit.ly/5acXW1
- 2 http://ezsch.ezweb.ne.jp/search/?sr=0103&query=Echo MIXI
- 2 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=OK-S32修理&ct=&pd=1&sr=0000
- 2 http://k.hatena.ne.jp/keywordblog/qemu