首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.gdbinit配置文件与Xcode调试冲突

.gdbinit配置文件与Xcode调试冲突
EN

Stack Overflow用户
提问于 2008-09-28 12:25:36
回答 3查看 3.9K关注 0票数 2

我的主目录中有一个相当大的.gdbinit (因此这里没有复制)。

现在,如果我想在Xcode中调试代码,我会得到这个错误:

代码语言:javascript
复制
Failed to load debugging library at:

/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib

Custom data formatters are disabled.

Error message was:
0x1005c5 "dlopen(/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib, 16): image not found" 

实际上-如下面所述-调试仍然在Xcode中工作,但数据格式中断。移出.gdbinit或禁用Data Formatters确实会让Xcode中的gdb恢复工作状态,但这显然是一种痛苦(包括第一种情况下的Data Formatters )。

你知道gdbinit中的哪些设置会在Xcode中导致这个错误吗?

回复中的注释:在链接到wxWidgets库时,似乎(通过谷歌搜索)可能会发生此错误。一些我没在这里做的事。

注意:如果需要,我可以提供我的(长) .gdbinit的副本

WIP:我会查看我的.gdbinit的详细信息,看看是否可以缩小问题的范围

EN

回答 3

Stack Overflow用户

发布于 2008-09-30 16:16:19

我的简短回答是:

您可能已经注意到了这一点,但以防万一:

首先,即使您看到了这个错误(假设您单击了它并继续),那么您应该仍然能够在中使用99%的调试特性。换句话说,该错误意味着对于给定的调试会话,只有很小的、特定的调试器部分“中断”。not意味着对于给定的程序执行,调试是完全关闭的和/或不可能的。

鉴于上述事实,如果您只是想摆脱错误,而不关心自定义数据格式是否正常工作,则删除以下菜单项旁边的复选标记:

  • 运行->变量视图->启用数据格式

我的“长长”答案是:

我办公室的开发人员已经经历了很长一段时间的Xcode错误,直到有人发现是一些第三方库导致的。

在我们的例子中,这个错误只发生在使用wxWidgets的项目中。我并不是在暗示wxWidgets的使用是唯一可能的原因。我只是试图提供更多的信息,这些信息可能会为您的案例带来正确的解决方案。

同样有趣的是:我们(在我的办公室)在没有使用或存在任何.gdbinit文件的情况下收到了这个错误。

事实证明,触发此错误的wxWidgets的“属性”与“dlopen”的“自定义/通用”实现有关。在MacOSX10.3之前,操作系统中没有提供dlopen,因此显然一些库编写了自己的版本。当使用这样的库时,尝试打开PBGDBIntrospectionSupport.A.dylib的dlopen调用显然会失败。

Read through the comments on this sourceforge patch submission to learn even further details about dlopen in 10.3 and beyond.

此外,这里还有另一个相关链接:

Message on the Xcode users mailing list about PBGDBIntrospectionSupport and Custom Data Formatters

票数 5
EN

Stack Overflow用户

发布于 2008-09-30 01:01:24

奇怪的是。环顾我的Mac,我发现这个库很好,而且看起来很正常。

您是否尝试过使用dtrace查看Xcode和GDB在错误发生时尝试执行的操作?

票数 0
EN

Stack Overflow用户

发布于 2009-01-23 01:40:09

您的错误实际上与我在使用wxWidgets时得到的错误略有不同。自从我发现dlopen冲突已经有一段时间了,但我确实记得我必须在那个特定的调试会话中使用gdb本身来弄清楚发生了什么。此外,对于wxWidgets问题,十六进制地址每次都不同。

在gdb中,对错误消息中的十六进制地址调用"info symbol“。这可能会给你提供关于加载失败的确切细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/145765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档