探検


SGI KDBを使ったカーネルデバッグスレ

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
NGNG
カーネルデバッグの話はここで存分にどうぞ
2名無しさん@お腹いっぱい。
垢版 |
NGNG
age
31
垢版 |
NGNG
1.http://oss.sgi.com/projects/kdb/ より、使用しているカーネルにあった
 パッチをダウンロードし、カーネルソースにパッチを当てる。
2.make xconfigなりのカーネルコンフィグアプリを起動。
 Kernel Hackingの項目が追加されているので、
 "Build-in Kernel Debugger support"をyにする。ついでに
 "compile the kernel with frame pointers"もyにしたほうがスタック
 トレースがとりやすくなる。
3.カーネル再構築。
4.lilo.confに以下のように"kdb=on"のカーネルブートオプションをつける。
>image=/boot/vmlinuz-2.4.4-test
> label=test
> read-only
> root=/dev/hda2
> append="kdb=on"
5.liloを実行し、ブート情報を書き込み、ブートオプションをつけたカーネルから
 ブート。
6.Pauseキーを押すとカーネルデバッガに入る。"g"コマンドで再開。
4別のスレの1
垢版 |
NGNG
リモートの場合。
1.同じくクロスシリアルケーブルを用意しターゲットとターミナルを繋ぐ。
2.ターミナルマシン上で適当なターミナルプログラムを起動する。
3.liloのappendコマンドを以下のように変更。
 append="kdb=on console=ttyS0,38400"
 これで、シリアルコンソールにデバッガの出力が表示される。
 停止はターゲットでPauseキーか、ターミナルでCTRL-A。
4.ただこれだと、ブートメッセージがターミナルにしか表示されなく
 なるので、以下のようにしたほうがいいかも。
 append="kdb=on console=ttyS0,38400 console=tty0"
 これで、ブートメッセージは両方に出力される。そのかわりCTRL-Aでの
 Breakinはできなくなる。
 Initは最後に指定されたコンソールに出力するらしく、
 append="kdb=on console=tty0 console=ttyS0,38400"
 のようにしてしまうとInitの出力がターミナルだけになってしまうため
 不便。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況