为什么 GDB 说“无法识别文件的架构”?

发布于 2024-07-23 07:38:13 字数 264 浏览 10 评论 0原文

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

有谁知道为什么我收到此消息“文件的体系结构无法识别”?。gdb

在 xlc 编译的其他可执行文件上运行良好。

是否有一些我在编译时可能使用的选项,它与 GDB 不兼容。某些特定于处理器的选项 我为aix

编译了共享库 w xlc v9.0

I m using gdb on a aix shared lib running on aix 5.3?
When i try to run gdb for this file
i get a error message saying ""Architecture of file not recognized"
Don't know how to get this fixed.

Does anybody know why i get this message ""Architecture of file not recognized"?.

gdb runs fine on other executables compiled by xlc.

Is there some option that i might have used while compiling , which is not compatible with GDB.some processor specific option.

I compiled the shared lib w xlc v9.0 for aix.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久隐师 2024-07-30 07:38:13

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

如果可执行文件加载您的共享库,GDB 就会知道这一点。

You don't run GDB on a shared library, you run it on an executable.

If the executable loads your shared library, GDB will know about it.

甜味拾荒者 2024-07-30 07:38:13
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 的常见 问题,即使在最近的 gdb 版本上也是如此。

据我记忆和理解,XLC 和 gdb 在兼容性方面并不是很好(AIX 支持很少),您可以尝试使用 Gnu C 编译器。您可以查看 GDB 源代码以获取非常具体信息(我无法真正提供给您)。

这里是 gcc-AIX 详细信息的链接。

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);
}

This is the actual GDB code in question (gdb/arch-utils.c:530-544).

The information passed to the gdbarch pointer seems to be invalid. This is caused by gdb_find_by_info returning a NULL pointer and that is caused by find_arch_by_info (gdb/gdbarch.c:3656) returning a NULL pointer.

It basically means what it says: GDB could not identify the architecture of the file. This seems to be a common problem for xlc, even on recent gdb versions.

XLC and gdb are, as far i remember and understand, not very good when it comes down to compatability terms (AIX support is minimal), you might try using the Gnu C Compiler .You might look at the GDB sources for VERY specific information (that i can't really give you).

Here is a link to gcc-AIX specifics.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文