VMWare同士でシリアルポートを接続する方法で、baudrate 115200で接続。
* デバッグ対象のOS
- /boot/grub/grub.cfg のデバッグしたいカーネルの menuentry をコピーして、新しい menuentry を追加する。
- 追加した menuentry の "linux" のパラメータに "kgdboc=ttyS0,115200 kgdbwait" を追加する。以下は一例。
menuentry 'Ubuntu, with Linux 2.6.38.8 (debug)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root ba000129-5c3a-403c-9107-3d7649a4d051
linux /boot/vmlinuz-2.6.38.8 root=UUID=ba000129-5c3a-403c-9107-3d7649a4d051 ro kgdboc=ttyS0,115200 kgdbwait
initrd /boot/initrd.img-2.6.38.8
}
- 再起動時にSHIFTキーを押し続けてブートメニューを表示し、追加した menuentry に対応する項目を選ぶ。
* デバッガを起動するOS
GRUBとは関係ないが、ついでにデバッガ側の作業も記述しておく。
カーネルをビルドしたディレクトリに移動して、gdbを起動。以下のコマンドを入力。.gdbinit に記述しておいても良い。
(gdb) file ./vmlinux
(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS0
# GRUB2とはバージョン1.9以降を指すそうだ。ややこしい...。
0 件のコメント:
コメントを投稿