【问题标题】:.gdbinit config file conflict with Xcode debugging.gdbinit 配置文件与 Xcode 调试冲突
【发布时间】:2010-09-13 19:56:49
【问题描述】:

我的主目录中有一个相当大的 .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 或禁用 Data Formatters 确实让 Xcode 中的 gdb 恢复工作状态,但这显然很痛苦(包括数据格式化程序,在第一种情况下)

知道 gdbinit 中的哪些设置会导致 Xcode 中出现此错误吗?

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

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

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

【问题讨论】:

    标签: xcode debugging macos gdb


    【解决方案1】:

    我的“简短”回答:


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

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

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

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

    我的“长”回答:


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

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

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

    事实证明,触发此错误的 wxWidgets 的“属性”与“dlopen”的“自定义/通用”实现有关。在 Mac OS X 10.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

    【讨论】:

    • 非常好的回复,谢谢 其实我知道 wxWidget 问题(谷歌上仅有的几个结果),但我没有使用它。而且我还看到调试继续工作,只是破坏了数据格式化程序,这实际上是我需要的东西。我将详细了解我的 gdbinit
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我的库也有,没有文件完整性问题(如果我删除 gdbinit,Xcode 调试完全正常)
      • 至于调试 xcode 和 gdb,如果我能做到正确的话,我可能会求助于它。
      猜你喜欢
      • 2014-09-14
      • 2017-08-10
      • 2020-01-02
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 2019-12-07
      • 2017-03-31
      • 2015-05-26
      相关资源
      最近更新 更多