2

我的主目录中有一个相当大的 .gdbinit(因此未在此处复制)。

现在,如果我想在 Xcode 中调试代码,我会收到此错误:

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 或禁用数据格式化程序确实会让 Xcode 中的 gdb 恢复工作状态,但这显然很痛苦(包括数据格式化程序,在第一种情况下)

关于 gdbinit 中的哪些设置可能导致 Xcode 中出现此错误的任何想法?

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

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

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

4

3 回答 3

5

我的“简短”回答:


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

首先,即使你看到那个错误(假设你点击过去并继续),那么你应该仍然能够使用Xcode 中 99% 的调试功能。换句话说,该错误意味着对于给定的调试会话,调试器只有非常小的特定部分“损坏”。这并不意味着给定程序执行的调试完全停止和/或不可能。

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

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

我的“长”回答:


我办公室的开发人员在很长一段时间内都遇到了同样的 Xcode 错误,直到有人发现某些第三方库是原因所在。

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

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

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

阅读有关此 sourceforge 补丁提交的评论,以了解有关 10.3 及更高版本中的 dlopen 的更多详细信息。

另外,这里是另一个相关链接:

Xcode 用户邮件列表上关于 PBGDBIntrospectionSupport 和自定义数据格式化程序的消息

于 2008-09-30T16:16:19.240 回答
0

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

您是否尝试过使用 dtrace 来查看发生错误时 Xcode 和 GDB 正在尝试做什么?

于 2008-09-30T01:01:23.950 回答
0

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

在 gdb 中,在错误消息中的十六进制地址上调用“信息符号”。这可能会为您提供有关无法加载的确切内容的详细信息。

于 2009-01-23T01:40:09.213 回答