【问题标题】:Xcode 3.2 + LLVM = no local symbols when debuggingXcode 3.2 + LLVM = 调试时没有本地符号
【发布时间】:2010-11-25 03:37:07
【问题描述】:

我有一个使用 Xcode 3.2 在 10.6 上构建的 Mac OS X 10.5 项目。当我使用 GCC 4.2 进行调试构建并命中断点时,Xcode 调试器正常显示局部变量信息。如果我选择 LLVM GCC 4.2 或 Clang LLVM,当我遇到断点时,本地符号不可用,如果我尝试打印 self,GDB 会说 No symbol 'self' in current context strong> 或任何其他本地符号。在所有情况下,Generate debug info 选项都已设置。 Debug 配置设置为$(NATIVE_ARCH) 和 10.5 SDK,Build active architecture only 选项已设置。当 GDB 启动时,我可以看到它被配置为 x86_64-apple-darwin。我一定遗漏了一些明显的东西。使用 LLVM 编译器时如何让 GDB 显示本地符号?

【问题讨论】:

    标签: xcode debugging gdb llvm clang


    【解决方案1】:

    对于那些不熟悉的人,请详细了解 cdespinosa 的答案,这对我有用,我投了赞成票。

    1. 从 Xcode 菜单中,选择 Project > Edit Project Settings...
    2. 选择“构建”选项卡
    3. 在搜索框中输入“优化级别”,选择该字段,然后选择无。
    4. 接下来搜索“调试信息格式”,选择该字段,然后选择“DWARF”或“DWARF with dSYM”。

    如果我有权限,我会把它放在他的帖子中。 ;)

    这让我花了很多时间,坦率地说,Apple 有点马虎,但总的来说我不能抱怨。

    【讨论】:

      【解决方案2】:

      确保您使用 Dwarf 符号构建并且没有优化。 llvm 是一个新的后端,但并非所有优化的代码生成都与调试符号生成挂钩。

      【讨论】:

        【解决方案3】:

        这可能会有所帮助。尝试在项目的构建选项中关闭“链接时间优化”。这解决了我缺少调试符号的问题。

        事实上,这解决了我在使用 Clang 时遇到的一系列奇怪问题。我会说这个功能太先进了,还不能使用。

        【讨论】:

          【解决方案4】:

          来自 FSF 的 GDB 仅添加了对 JIT 代码的支持,非常 recently

          我不知道 Apple 提供的 GDB 是否完全支持它(你得到合理的堆栈跟踪吗?)。如果是这样,这种支持(显然)是不完整的。

          【讨论】:

          • 是什么让您认为这与 JIT 有任何关系,或者 Apple 会发布一个无法与他们编写的编译器完全兼容的 gdb?
          • 堆栈看起来正确,显示了我的所有功能。缺少的是本地变量。
          【解决方案5】:

          我遇到了这个问题,并通过在菜单项旁边打勾来解决它:“项目 > 设置活动构建配置 > 调试”。以前,选择了“发布”选项。从那时起,本地人开始出现在我的项目的调试器中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-05
            • 1970-01-01
            • 2017-07-14
            • 1970-01-01
            • 1970-01-01
            • 2013-12-06
            • 1970-01-01
            相关资源
            最近更新 更多