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