kernel 2.6.26には kgdbがマージされている。
以下のオプションを有効にしたkernelを作成。
Kernel hacking
KGDB: kernel debugging with remote gdb
KGDB: use kgdb over the serial console
grub menu.lstのkernelオプションに以下を追加。
kgdboc=ttyS1,9600 kgdbwait
qemu のserialで kgdbに接続するなら
オプションに -serial stdin -serial pty を
付けて起動し、ホスト側で gdb を起動
cd linux-2.6.26
gdb
(gdb) file vmlinux
(gdb) set remotebaud 9600
(gdb) break init_post
(gdb) target remote /dev/pts/0
で、kgdbに接続できる。
けど、gdbを Ctrl-c で止めると再接続できないよ ^^;
結局、qemu使った方がラク
qemu -s -kernel linux-2.6.26/arch/x86/boot/bzImage -h -initrd initrd-2.6.26.img da hda.img -append "root=/dev/VolGroup00/LogVol00"
(gdb) target remote localhost:1234
... gdbの接続待ってくれないのがイマイチですが...
moduleをデバッグする場合は...
linux起動後、ターゲットモジュールを insmod して、
cat /proc/modules で アドレスを確認。
...
ne2k_pci 8680 0 - Live 0xc8815000
...
gdb で symbol をロードすれば良い。
(gdb) add-symbol-file drivers/net/ne2k-pci.ko 0xc8815000
(gdb) break ne2k_pci_open
で、ifconfig eth0 X.X.X.X/24 とかすると break する。
0 件のコメント:
コメントを投稿