VMWare Fusionを利用したFreeBSDリモートカーネルデバッグ環境の構築

ふつうにインストール。
カーネルオプションを変更してビルド。KDBとかDDBとか入れた気がする。

make clean && make cleandepend && make depend -j 3 && make WITH_CTF=1 -j 3 && make install

device sioを忘れずに。忘れた。
→ ビルド失敗。device pucを追加してみる。
→というかsioはdeprecatedぽい。よくみるとuart0はうごいてる。

VMをコピー。ここで名前を変更しておく。

VMの設定→その他のデバイス→+マーク→シリアルポートの追加→ファイルを使用

http://communities.vmware.com/message/748577#748577
を参考にvmxファイルを修正して2つのVMをつなげる。

起動してIPアドレスの設定。MACアドレスdhcpサーバに登録。

/boot/device.hintsでflagを0xf0に(0x80でもおなじっぽい。コンソールにはなれない??)

 tgt> sysctl debug.kdb.enter=1
 debugger> kgdb
 > target remote /dev/cuau0

できた!
でもとても重い

モジュールのデバッグ

すばらしいドキュメントを発見:
http://people.freebsd.org/~jhb/papers/bsdcan/2008/article/node4.html#SECTION00042100000000000000

 make DEBUG_FLAGS=-g
 scp mod_nicq.ko bsdtgt:
 bsdtgt> kldload ./mod_nicq.ko
 bsdtgt> debug/nicq_test
 panic!!!
 bsdtgt> gdb
 kgdb /boot/kernel/kernel
 target remote /dev/cuau0
 bsdtgt> s
 info sharedlibrary
 add-kld mod_nicq.ko
 bt
 みえる、みえるぞ!