GDB 错误:所选架构 i386 与报告的目标架构 i386 不兼容:x86-64

Posted

技术标签:

【中文标题】GDB 错误:所选架构 i386 与报告的目标架构 i386 不兼容:x86-64【英文标题】:GDB error: Selected architecture i386 is not compatible with reported target architecture i386:x86-64 【发布时间】:2017-02-09 11:26:14 【问题描述】:

有谁知道这个错误是什么意思?

我在 Linux 机器上使用 Netbeans 8.0、gdb 7.8.1。直到两天前一切都很好,然后我开始调试时突然开始收到此错误,我不知道这是什么意思。 到目前为止,我正在尝试清理和重置我能想到的所有内容:重新安装 netbeans,清理所有本地文件,再次 rebase 我的代码,取消设置所有断点等等。 谁能帮我理解这个错误的含义?我从未设置过这些断点,Netbeans 从哪里获取它们?

提前致谢, 雷切尔

编辑

所以现在我有更多细节: 当我尝试直接使用 GDB 调试我的应用程序时,没有 netbeans 我收到以下错误:

启动程序:.... 警告:所选架构 i386 与报告的目标架构 i386 不兼容:x86-64 警告:架构拒绝了目标提供的描述 警告: 无法插入断点 -1。 暂时禁用共享库断点: 断点 #-1 无法插入断点 1。 无法访问地址 0x8081527 处的内存

如何确定编译中的哪些代码\标志使我的应用程序成为 i386?我怎样才能强制它是 x86_64?

再次感谢。

【问题讨论】:

但是,您在那之前开发过您的代码,对吗?而这条消息究竟是什么时候弹出的? 有 NetBeans 日志文件。在我的机器上它位于~/.netbeans/8.2/var/log 也许你需要清理上一个会话的断点。查看调试/断点窗口并删除所有断点。 我已经这样做了,但仍然出现此错误。 【参考方案1】:

好的,我机器上的 gdb 安装被搞砸了。 没有人能想象得到。我搬到另一台机器上,现在一切都很好。

【讨论】:

【参考方案2】:

当您尝试在非 WSL 应用程序上使用 WSL gdb 时,可能会出现此错误。

【讨论】:

【参考方案3】:

我认为你更新了系统,最新版本的 glib 不支持 32 位应用程序。

您能否找出系统上所有binlib 目录中的哪些文件在过去2 天内发生了更改?如果它曾经支持它,但升级版本不支持,那么(可能在您不知情的情况下)编译为 32 位的应用程序将不是盒子上所有标准工具的有效目标。

您使用-m32-m64 指定目标架构。如果您在不同的机器上编译和调试,请查看是否可以明确指定它。

【讨论】:

我检查了我的应用程序及其使用的所有共享库 - 它们都是 x32。还有什么想法吗?

以上是关于GDB 错误:所选架构 i386 与报告的目标架构 i386 不兼容:x86-64的主要内容,如果未能解决你的问题,请参考以下文章

尝试编译 AFNetworking 2.0 时架构 i386 的未定义符号

Cordova + XCTest 导致“架构 i386 的未定义符号”

仅构建活动架构时 Cordova 链接器错误“没有为归档构建文件,该文件不是被链接的架构 (i386)”

架构 i386 的未定义符号 - Lipo 错误?

错误 ITMS-9000 无效架构 x86_64、i386

Ubuntu 16.04使用NASM编译时用ld链接程序出现:i386 架构于输入文件 sandbox.o 与 i386:x86-64 输出不兼容(I386 architecture in the i