2012-05-10 11 views
5

私はxv6に基づいているOSクラスをやっていて、それを実行する必要のあるプログラムを書いています。gdbでxv6のユーザコードをデバッグ

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

私はcatをデバッグしたいと言いますが、どうしたらいいですか?

ありがとう

P.S. xv6タグはありませんか?この質問はここに行かなければならないのでしょうか?

+0

'を続行:ファイルcat'、':メインブレイクを'、' run'は何かを得ますか? – shevski

+0

さて、私はそれを試みたと確信していたので、今私は本当に愚かな気がします。しかし今、私は代わりに 'load'を試したかもしれないと思います。ありがとう!私はこれをどこでもオンラインで探して、何人かの人に電子メールを送りましたが、誰も私にこれを教えてもらえません...(回答と私は受け入れます) –

答えて

5

file catbreak main、xv6の最上位ディレクトリからcontinue

半参照running and debugging xv6

+0

':'は必要ではありませんが、動作します! _catこれはGDBで実行されている方法により、ホスト 上のファイルの名前があるので –

+0

は、私はそれを試したとき、私は を行うために必要な – shevski

+0

申し訳ありませんvimの表記 'ファイル_catは、これはメイン continue' を破る ウィンドウを開きます(make qemu-gdbを実行した後、別のウィンドウでgdbカーネルを実行しました)。 –

5

  1. 実行デバッグモードでエミュレータ(無X11を想定していない):make qemu-nox-gdb

  2. 他の端末では、デバッガを実行するだけです

  3. は、GDBインターフェイスの実行から、例えばmain()

    、そうでない場合、デバッガは、カーネルとユーザプログラムシンボル間混同され、 gdb kernelこれは重要です:(gdb) target remote localhost:26000 26000がTCPであるとカーネルシンボルをロードしますポート#1が最後に報告します(これは変わるかもしれません)。

  4. ロード(gdb)file user_program

  5. 場所ブレークポイント(gdb) break mainを持つユーザEXECと(gdb) continue

  6. 等...

関連する問題