カーネルが予想もしない時にコアダンプして config -g を行ってコンパイルされていなかった場合にはどうしたら よいでしょう. すべてが失われるわけではありません. パニックを起こさないでください.
もちろん, クラッシュダンプを使えるようにする必要があります. 使い方は前述の部分を見てください.
カーネルのコンパイルディレクトリで, (Makefileの) COPTFLAGS?=-O とある行を編集します. -gオプショ ンをここに加えます (オプティマイズオプションのレベルは 変更しな いでください ). もし大まかにコードのどこで問題が起きているか (例 えば, 上の例では pcvtドライバ) わかっているのでしたら, その部 分のコードについてのすべてのオブジェクトファイルを 消してください. カーネ ルを再構築しましょう. Makefileのタイムスタンプの変更により, 例えば trap.o などのいくつかの他のオブジェクトファイルも作り直さ れます. 少しの幸運があれば, -gオプションが追加されても作ら れるコードは変更されず, いくらかのデバッグシンボル以外には 問題を 起こしたコードとそっくりな新しいカーネルを手に入れることが できます. 少なくとも size(1) コマンドで古い方と新しい方のサイズを比較すべ きです. これが食い違っていれば, 多分あきらめなければならないでしょう.
ダンプを使って前述のように動かして調べます. デバッグシンボルは 必ずしも十分ではありません. 上の例ではスタックトレースでいくつかの関 数の行番号や引数リストが表示されないかもしれません. もしより多くのデ バッグシンボルが必要であれば,十分になるまで 適切なオブジェクトファイ ルを消して (makeして) kgdbセッションを繰り返してください.
これは必ずしもうまく動くと保証はできません. しかしほとんどの場合でう まくいくでしょう.