11

xv6に基づくOSクラスを実行していて、その上で実行する必要のあるプログラムを作成しました。

でカーネルコードをデバッグできることは知っていますmake qemu-gdbが、自分のユーザープログラムをデバッグする方法がわかりません。

デバッグしたいとしcatましょう。どうすればそれを実行できますか?

ありがとう

PS xv6タグはありませんか?この質問はここに行くべきですか?

4

2 に答える 2

11

xv6トップレベルディレクトリから:

  1. エミュレータをデバッグモードで実行します(X11がないと仮定)。make qemu-nox-gdb

  2. 他の端末では、次のカーネルシンボルをロードするデバッガーを実行するだけです。 gdb kernel これは重要です。そうしないと、デバッガーがカーネルシンボルとユーザープログラムシンボルの間で混乱します。main()

  3. gdbインターフェースから実行:(gdb) target remote localhost:26000 ここで、26000は、ステップ#1が最後に報告するTCPポートです(これは変更される可能性があります)。

  4. ユーザーexecをロードします(gdb)file user_program

  5. ブレークポイントを設定(gdb) break main して続行します(gdb) continue

  6. 等...

于 2016-09-28T08:36:40.217 に答える
5

file cat、、break main_continue

セミリファレンスの実行とデバッグxv6

于 2012-05-10T20:28:25.930 に答える