为什么GDB说“文件架构未被识别”?

时间:2009-06-08 06:45:39

标签: debugging gdb aix

我在aix 5.3上运行的aix共享库上使用gdb? 当我尝试为此文件运行gdb时 我收到一条错误消息,说“”文件架构未被识别“ 不知道如何解决这个问题。

有人知道为什么我收到此消息“”文件架构未被识别“?。

gdb在xlc编译的其他可执行文件上运行正常。

我在编译时是否有一些选项,这与GDB.some特定处理器选项不兼容。

我为aix编译了共享的lib w xlc v9.0。

感谢。

2 个答案:

答案 0 :(得分:2)

您不在共享库上运行GDB,而是在可执行文件上运行它。

如果可执行文件加载了您的共享库,GDB将会知道它。

答案 1 :(得分: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源代码非常特定信息(我无法真正给你)。

Here是gcc-AIX细节的链接。