10

我有一个使用 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' 。在所有情况下,设置了生成调试信息选项。Debug 配置设置为10.5 SDK, Build active architecture only选项设置。当 GDB 启动时,我可以看到它被配置为 x86_64-apple-darwin。我一定遗漏了一些明显的东西。使用 LLVM 编译器时如何让 GDB 显示本地符号?$(NATIVE_ARCH)

4

5 回答 5

10

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

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

如果我有 privs,会在他的帖子的评论中提出这个。;)

这让我花了很多时间,坦率地说,这对苹果来说有点草率,但总的来说我不能抱怨。

于 2010-02-23T03:29:16.447 回答
6

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

于 2009-11-21T05:59:26.213 回答
5

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

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

于 2009-11-21T01:38:18.783 回答
1

FSF 的 GDB最近才添加了对 JIT 代码的支持。

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

于 2009-09-04T02:18:57.563 回答
1

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

于 2010-05-05T04:05:17.297 回答