xv6に基づくOSクラスを実行していて、その上で実行する必要のあるプログラムを作成しました。
でカーネルコードをデバッグできることは知っていますmake qemu-gdbが、自分のユーザープログラムをデバッグする方法がわかりません。
デバッグしたいとしcatましょう。どうすればそれを実行できますか?
ありがとう
PS xv6タグはありませんか?この質問はここに行くべきですか?
xv6トップレベルディレクトリから:
エミュレータをデバッグモードで実行します(X11がないと仮定)。make qemu-nox-gdb
他の端末では、次のカーネルシンボルをロードするデバッガーを実行するだけです。
gdb kernel これは重要です。そうしないと、デバッガーがカーネルシンボルとユーザープログラムシンボルの間で混乱します。main()
gdbインターフェースから実行:(gdb) target remote localhost:26000
ここで、26000は、ステップ#1が最後に報告するTCPポートです(これは変更される可能性があります)。
ユーザーexecをロードします(gdb)file user_program
ブレークポイントを設定(gdb) break main して続行します(gdb) continue
等...
file cat、、break main_continue
セミリファレンスの実行とデバッグxv6