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 みえる、みえるぞ!