2009-06-08 85 views
0

我在aix 5.3上運行的aix共享庫上使用gdb? 當我嘗試此文件 我得到一個錯誤信息「」文件的結構不承認」運行GDB 不知道如何得到這個固定。爲什麼GDB會說「文件架構無法識別」?

有誰知道爲什麼我得到這個消息‘’文件架構未被識別「?

gdb在由xlc編譯的其他可執行文件上運行良好。

是否有一些選項可能在編譯時使用,這與GDB.some處理器特定的選項不兼容。

我爲aix編譯了共享庫w xlc v9.0。

謝謝。

+0

不完全是一個問題......也許你可以提供更多的細節.... – 2009-06-08 06:54:00

回答

0
 
void 
set_gdbarch_from_file (bfd *abfd) 
{ 
    struct gdbarch_info info; 
    struct gdbarch *gdbarch; 

    gdbarch_info_init (&info); 
    info.abfd = abfd; 
    info.target_desc = target_current_description(); 
    gdbarch = gdbarch_find_by_info (info); 

    if (gdbarch == NULL) 
    error (_("Architecture of file not recognized.")); 
    deprecated_current_gdbarch_select_hack (gdbarch); 
} 

這是有問題的實際GDB代碼(gdb/arch-utils.c:530-544)。

傳遞給gdbarch指針的信息似乎無效。這是由gdb_find_by_info返回一個NULL指針引起的,而這是由find_arch_by_info(gdb/gdbarch.c:3656)返回一個NULL指針引起的。

它基本上意味着它說:GDB無法識別文件的體系結構。這似乎是xlc的一個common問題,即使是最近的gdb版本也是如此。

XLC和gdb是,據我記憶和理解,不是很好,當它歸結到兼容性方面(AIX支持是最小的),你可以嘗試使用Gnu C Compiler。你可以看一下GDB源VERY具體信息(我真的不能給你)。

Here是指向gcc-AIX細節的鏈接。

2

您不會在共享庫上運行GDB,您可以在可執行文件上運行它。

如果可執行文件加載共享庫,GDB會知道它。