我的主目录中有一个相当庞大的.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,了解我是否可以缩小问题范围
答案 0 :(得分:5)
您可能已经注意到了这一点,但以防万一:
首先,即使您看到该错误,(假设您点击它并继续),您应该仍然可以在Xcode中使用99%的调试功能。换句话说,该错误意味着对于给定的调试会话,只有调试器的非常小的特定部分被“断开”。它 不 意味着对于给定的程序执行,调试完全停止和/或不可能。
鉴于上述事实,如果您只是想摆脱错误并且不关心自定义数据格式化程序是否正常工作,则删除以下菜单项旁边的复选标记:
我办公室的开发人员在相当长的时间内遇到了同样的Xcode错误,直到有人发现某些第三方库是原因。
在我们的示例中,此错误仅发生在使用wxWidgets的项目中。我并不是说暗示使用wxWidgets是唯一可能的原因。我只是想提供更多可能为您的案例提供正确解决方案的信息。
同样感兴趣的是:我们(在我的办公室)在没有任何使用或存在任何.gdbinit文件的情况下收到此错误。
事实证明,导致此错误的wxWidgets的“属性”与“dlopen”的“自定义/通用”实现有关。在Mac OS X 10.3之前, 操作系统中没有提供dlopen,因此显然有些库编写了自己的版本。当使用这样的库时,显然尝试打开PBGDBIntrospectionSupport.A.dylib的dlopen调用可能会失败。
另外,这是另一个相关链接:
Message on the Xcode users mailing list about PBGDBIntrospectionSupport and Custom Data Formatters
答案 1 :(得分:0)
奇怪......环顾我的Mac,我看到那个库很好,看起来很清醒。
您是否尝试使用dtrace查看错误发生时Xcode和GDB正在尝试做什么?
答案 2 :(得分:0)
您的错误实际上与我使用wxWidgets的错误略有不同。自从我发现dlopen冲突以来已经有一段时间了,但我确实记得我必须在特定的调试会话中使用gdb来弄清楚发生了什么。另外,对于wxWidgets问题,每次都是十六进制地址不同。
在gdb中,在错误消息中的十六进制地址上调用“info symbol”。这可能会为您提供有关未能加载的详细信息。