0

recore ファイルを分析すると、私の gdb 7.0 はいくつかの警告を出力します。

warning: Wrong size gregset in core file.
warning: Wrong size fpregset in core file.
warning: Wrong size gregset in core file.
warning: Wrong size fpregset in core file.
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.

関連しているかどうかはわかりませんが、バックトレースを取得できません:

(gdb) bt
#0  0x00000000 in ?? ()

OS アーキテクチャは SUN Solaris 10 SPARC です。

質問:

  1. これらの警告の理由/原因は何ですか?
  2. バックトレースを取得できないのはなぜですか?
  3. これらの問題を解決するには?
4

2 に答える 2

0

また、Solaris 10 で gdb 7.6.2 を使用して 64 ビットのコア ダンプを処理しようとしたときに、fpregset の警告が表示されました (スタック トレースはありません)。 - 64 ビット コア cumps のサポートなし。

GDB の IRC チャンネルの人たちは、次のパラメータをくれました:

--enable-64-bit-bfd

gdb の 64 ビット バージョン (-m64) もコンパイルしましたが、これは必要ありません。これで、gdb は 64 ビット コア ダンプで動作し、警告なしでスタック トレースを作成できるようになりました。

于 2013-12-23T18:39:45.223 に答える
0

この問題は、gdb でもプログラムでも発生する可能性があります。gdb を最新バージョン (7.3.1) に更新することをお勧めします。また、簡単なテスト プログラムを作成し、そのコアを gdb で分析して、ユーティリティが正常に動作することを確認することも役立ちます。

「gregset」およびその他のエラーは、gdb がコア ファイルからデータを読み取れないことを示します。プログラムが暴走し、スタックが破損した場合に発生する可能性があります。gregset エラーは、gdb がコア ファイルから汎用レジスタ セットを読み取ることができなかったことを意味します。fpregset は浮動小数点レジスタ セット用です。予想されるレジスタ サイズは、プラットフォームによって異なります。

コアファイルを正しく読み取れない場合、bt は機能しません。

于 2012-01-13T13:17:41.530 に答える