1

gdbを仮想マシンのカーネルに接続し、カーネルモジュールをデバッグしようとしています。仮想マシンに接続できます。カーネルコードのシンボル情報があり、カーネルコードを問題なくステップスルーできます。

カーネルモジュールのシンボルファイルを追加すると(ちなみに、リモート接続の前でも後でも)、ブレークポイントを設定するまでlist <function_name>、関数に関する情報を得ることができます。その後:

(gdb) b function_name
Breakpoint 1 at 0xffffffffa01d0074 (3 locations)
(gdb) list function_name
No line number known for function_name.

追加情報:

  • ホストとゲストはどちらもFedora1664ビットです。
  • 私がデバッグしているカーネルは3.0.8です。このカーネルは、異なる環境とリモート接続設定を使用した以前の32ビット設定で正常に機能したことに注意してください。
  • 私はこれをgdb7.2と7.3.50で試しました。

何が悪いのかについてのアイデアはありますか?問題が私のカーネル、カーネルモジュールのコンパイル、接続、またはgdbのいずれであるかを確実に知っていれば、役に立ちます。

更新:gdb 7.1では、次のようになります。

...
(gdb) b function_name
/gdb/breakpoint.c:7903: internal-error: expand_line_sal_maybe: Assertion `found' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

どういう意味ですか?

4

1 に答える 1

0

部分的な答え:

gdb 7.1では、カーネルとカーネルモジュールをで再コンパイルします-gdwarf-2。モジュールはでうまくいっ-O0たようです。それがどれなのか、なぜなのかはまだわかりません。

于 2012-05-21T01:33:29.040 に答える