0

OS の作成に取り組んでおり、コードをデバッグしようとして問題が発生しています。GDB を使用して Bochs の GDB スタブに接続し、カーネルを「リモートで」デバッグしています。カーネル ファイルからのデバッグ シンボルのロードと同様に、接続は正常に機能します。kmain 関数のブレークポイントを設定すると、正常に配置され、デバッガーが (カーネル内で) 正しくブレークします。ただし、コードを「ステップ」または「次へ」することはできません。また、GDB はコードのどの行が現在の行であるかを明らかに判断することもできません。

「ステップ」しようとすると、「現在の関数の境界が見つかりません」というメッセージが表示されます。これは、いつでも表示される唯一のエラー メッセージです。

私のコードは、-g フラグを使用して GCC でコンパイルされています (GCC オプションを使用して他の種類のデバッグ情報を試しましたが、どれも機能しませんでした。) GDB のマニュアルを調べたり、答えを探したりしましたが、完全に困惑しています。どんな助けでも素晴らしいでしょう。

ありがとう!

4

3 に答える 3

3

さて、デバッグは機能しましたが、エミュレーターを切り替える必要がありました。私もそれを行うのに問題がありましたが、GDB を Qemu で動作させることができました。GDB を Qemu gdbserver に接続するには、「-gdb tcp::1234,ipv4」というオプションを Qemu に渡す必要がありました。それを理解するのに永遠にかかりました...デバッグは今では完全に機能します!

于 2010-06-22T17:58:48.263 に答える
0

グーグルは「これは、gdbserver にアタッチしたときに、デバッグ中のプロセスが C スタートアップ コードを完了していないためです」とスローしますhttp://www.cygwin.com/ml/gdb/2005-03/msg00237.html .. . http://www.bravegnu.org/gnu-eprog/c-startup.htmlは、組み込みデバイス向けにコーディングするときのプロセスを説明しています。

答えが見つかったら、問題の解決策も知りたいので、ここに投稿してください。

于 2010-06-21T18:33:01.593 に答える
0

理由はわかりませんが、gdb-stub が有効になっている bochs は設定オプションにうるさいようです。--enable-x86-64、--enable-vmx オプションを使用すると、一部のシステムで問題が発生します。

于 2011-03-15T19:01:59.157 に答える