2012-01-13 95 views
0

reWhen分析核心文件尺寸錯誤fpregset,我GDB 7.0輸出幾個警告: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 ??() 

操作系統架構是SUN Solaris 10 SPARC。

問題:

  1. 什麼是這些警告的原因/原因是什麼?
  2. 爲什麼我不能檢索回溯?
  3. 如何解決這些問題?

回答

0

該問題可以在gdb以及您的程序中。 我會建議將gdb更新到最新版本(7.3.1)。此外,創建簡單的測試程序並使用gdb分析其核心可能會有所幫助,以確保您的實用程序正常工作。

「gregset」等錯誤表明gdb無法讀取核心文件中的數據。如果你的程序變得瘋狂並且損壞了堆棧,它可能會發生。 gregset錯誤意味着gdb無法從核心文件讀取通用寄存器集。 fpregset用於浮點寄存器集。期望的寄存器大小取決於平臺。

如果您不能正確讀取核心文件,bt將不起作用。

0

當我嘗試在Solaris 10上使用gdb 7.6.2處理64位核心轉儲時,我也有fpregset警告(並且沒有堆棧跟蹤)。原因似乎是,編譯Solaris 10的用戶空間應用程序32位默認 - 並且不支持64位核心轉儲。

在GDB的IRC頻道的傢伙給了我下面的參數:

--enable-64-bit-bfd 

我還編GDB(-m64)的64位版本,但不應該是必要的。現在,gdb可以在64位內核轉儲上工作,並創建沒有任何警告的堆棧跟蹤。

相關問題