我有一个Mac OS X 10.5的项目,我使用Xcode 3.2在10.6上构建。当我使用GCC 4.2进行Debug构建并命中断点时,Xcode调试器通常会显示局部变量信息。如果我选择LLVM GCC 4.2或Clang LLVM,当我点击断点时,本地符号不可用,并且如果我尝试打印 self >,GDB会说在当前上下文中没有符号'self' strong>或任何其他本地符号。在所有情况下都设置生成调试信息选项。 Debug配置设置为$(NATIVE_ARCH)
,并且设置了10.5 SDK,仅构建活动体系结构选项。当GDB启动时,我可以看到它被配置为x86_64-apple-darwin。我一定错过了一些明显的东西。在使用LLVM编译器时,如何使GDB显示本地符号?
答案 0 :(得分:10)
对于那些不熟悉的人,cdespinosa的回答更加详细,这对我有用,并且我投票了。
如果我有权利,他会在评论中写这篇文章。 ;)
这花费了我一些严肃的时间,坦白说苹果公司有点草率,但总的来说我不能抱怨。
答案 1 :(得分:6)
确保使用Dwarf符号构建并且不进行优化。 llvm是一个新的后端,并不是它的所有优化代码都连接到调试符号生成。
答案 2 :(得分:5)
这可能会有所帮助。尝试在项目的构建选项中关闭“链接时优化”。这解决了我丢失调试符号时遇到的问题。
事实上,这解决了我与Clang的一系列奇怪问题。我会说这个功能太过于使用了。
答案 3 :(得分:1)
来自FSF的GDB仅添加了对JIT代码的支持recently。
我不知道Apple提供的GDB是否完全支持它(你有合理的堆栈跟踪吗?)。如果确实如此,这种支持(显然)是不完整的。
答案 4 :(得分:1)
我遇到了这个问题并通过在菜单项旁边打勾来解决它:“Project> Set Active Build Configuration> Debug”。以前,选择了“发布”选项。从那时起,本地人开始在我的项目的调试器中显示。