我正在尝试使用Xcode 4调试大型c ++项目。我必须使用makefile运行可执行文件,因此我将项目添加为外部构建系统。程序确实编译并正常运行,具有预期的输出。如果我编辑一个文件以在编译期间产生错误,Xcode会注意到这一点并转到正确文件中的正确行。问题是系统不会停在我设置的断点处。
我在方案here中添加了可执行文件。我已将所有源文件添加到项目中。我已按照建议的here将自定义工作目录设置为正确的工作目录。我已经确定我认为由Xcode构建的可执行文件确实是那个,我也尝试在设置方案后手动运行它等待手动启动,没有变化。
当我设置断点时,它们会显示为蓝色。
有人可以给我任何关于我还能尝试的其他提示吗?非常感谢!
答案 0 :(得分:0)
尝试在g ++中添加-g选项以包含调试信息。帮助我。
答案 1 :(得分:0)
我也有同样的问题。我在makefile中包含了这一行,并且它实现了技巧
#also include debug symbols
CFLAGS+=-ggdb
答案 2 :(得分:0)
如果您使用ccache构建项目,lldb将无法按文件设置断点:line
答案 3 :(得分:0)
导入源文件时,是否选中了“必要时复制文件”复选框?这似乎并不好。这就是让断点失败的原因。我不得不删除所有源文件并重新导入它们,确保Xcode没有单独复制它们。这使断点起作用。
我猜XCode无法将调试信息(-g / -ggdb)与其自己的源副本相关联,或者是那种情况。
答案 4 :(得分:0)
我遇到了完全相同的问题(Xcode 8.3.3)但是将-ggdb添加到makefile并没有修复它。我发现(经过很多痛苦)makefile正在清理.o文件作为构建的一部分(rm -f $(OBJFILES))。事实证明,符号信息存在于.o文件中,因此通过删除它们,Xcode无法再调试。我评论了rm线,现在一切正常。我使用-g标志,它的工作原理。任何与之斗争的人都应确保.o文件位于正确的位置。
答案 5 :(得分:0)
在makefile中的CFLAGS和CXXFLAGS中添加-g会有所帮助。您可能需要对项目中的所有Makefile执行此操作。甚至是您尝试断点的内部目录中的makefile。这完全取决于您的项目结构。我必须在项目中添加所有3个Makefile。
对于我来说,它并没有立即生效。我必须手动删除.o文件,然后使用添加到Makefile中的标志再次进行构建。
此外,请确保您已按照问题中的建议完成了所有操作。