2004年10月13日(水) [長年日記]
■ [net] v6eval
改造したKAMEをテストするのに、TAHI ProjectにあるTAHI IPv6 Conformance Test Suiteのプラットフォーム部分であるv6eval-2.3.1を使ってみたのでメモ。
オリジナルメッセージの送受信をテストしたいのだが、そのためにはv6evalのソースに手を入れないといけないようだ。lib/Pz にある McInit.cc 内に様々なメッセージが定義されていたのでそこに見よう見まねで新規メッセージを追加し、更に McICMPv6.h と McICMPv6.cc と DmObject.cc にも定義を追加したらオリジナルなメッセージを送受信できるようになった。
ここに日本語のマニュアルもあったけど、分からないことばかり。sampleのパケット定義とテストスクリプトを真似すれば単純なメッセージの送受信はできる。ちゃんとしたテストをするスクリプトを書くのはすごく大変そう。
■ [unix] カーネルのリモートデバッグ
FreeBSD 4.9 でカーネルのリモートデバッグをしたのでちょっとメモ。FreeBSD ハンドブックにある通りなんだけど。
- ターゲットPCとリモートPCをシリアルケーブルで接続する。
- カーネルはリモートPC上でビルドする。config を実行するときに -g オプションを付ける。
- ビルドしてできたkernel.debugをターゲットPCへ送る。ターゲットPCにて、「strip -x kernel.debug」としてから kernel.debug を / へコピーする。
- ターゲットPCをリブートし、ブートローダから「boot kernel.debug -d」と -d オプション付きでカーネルをブートする。すると、「db> 」プロンプトが表示される。
- リモートPCにて「gdb -k kernel.debug」としてGDBを起動し、「target remote /dev/cuaa0」を実行する。そのままにしておくと「Ignoring packet error, continuing...」というメッセージが3回表示されてタイムアウトしてしまった。
- リモートPCで「target remote /dev/cuaa0」を実行中に、ターゲットPCの「db> 」プロンプト上で「gdb」と入力し、「Next trap will enter GDB remote protocol mode」と表示されたら「s」を入力する。するとリモートPC上に「db_numargs (fp=0xc04c3869) at ../../i386/i386/db_trace.c:152」のように表示され、普通にGDBが使えるようになる。ブレークポイントを設定してcontinueだ。
- デバッグの終わり方がよく分からないけど、GDB上でCtrl+Cを2回押すと割り込めてGDBを終了できた。
■ やること
- プリンタ処分
- リンク元のスリム化