0

我正在尝试使用 Xcode 4 调试一个大型 c++ 项目。我必须使用 makefile 运行可执行文件,因此我将该项目添加为外部构建系统。该程序确实可以正常编译和运行,并具有预期的输出。如果我在编译期间编辑一个文件以产生错误,Xcode 会注意到这一点并转到正确文件中的正确行。问题是系统不会在我设置的断点处停止。

我已经在方案中添加了可执行文件,如此处所述。我已将所有源文件添加到项目中。我已按照此处的建议将自定义工作目录设置为正确的目录。我已经确保我认为由 Xcode 构建的可执行文件确实是那个,并且我也尝试在将方案设置为等待手动启动后手动运行它,没有任何变化。

当我设置断点时,它们会显示为应有的蓝色。

有人可以给我任何关于我可以尝试什么的提示吗?非常感谢!

4

6 回答 6

0

尝试将 -g 选项添加到 g++ 以包含调试信息。对我有帮助。

于 2013-02-15T00:51:23.207 回答
0

我也有同样的问题。我在makefile中包含了这一行,它成功了

#also include debug symbols
CFLAGS+=-ggdb
于 2014-01-28T01:14:40.617 回答
0

如果您使用 ccache 构建项目,lldb 将无法通过 file:line 设置断点

http://llvm.org/bugs/show_bug.cgi?id=20297

于 2014-07-14T19:53:42.380 回答
0

我遇到了完全相同的问题(Xcode 8.3.3),但是将 -ggdb 添加到 makefile 并没有解决它。我发现(经过很多痛苦)makefile 正在清理 .o 文件作为构建的一部分(rm -f $(OBJFILES))。事实证明,符号信息位于 .o 文件中,因此通过删除它们,Xcode 无法再进行调试。我注释掉了 rm 行,现在一切正常。我使用了 -g 标志,它可以工作。与此作斗争的任何人都应确保 .o 文件位于正确的位置。

于 2017-08-22T02:08:54.550 回答
0

在 makefile 中将 -g 添加到 CFLAGS 和 CXXFLAGS 会有所帮助。您可能必须对项目中的所有 Makefile 执行此操作;甚至是您尝试断点的内部目录中的makefile。这完全取决于您的项目结构。我必须在项目中添加所有 3 个 Makefile。

它没有立即对我起作用。我不得不手动删除 .o 文件并使用添加到 Makefile 的标志再次构建。

另外,请确保您已按照此处问题中的建议完成所有操作。

于 2020-05-03T05:43:06.793 回答
0

导入源文件时是否选中了“如有必要复制文件”复选框?这似乎不太好。这就是让断点对我来说失败的原因。我必须删除所有源文件并重新导入它们,确保 Xcode 没有单独制作它们的副本。这使得断点工作。

我猜 XCode 无法将调试信息(-g / -ggdb)与它自己的源副本或类似的东西联系起来。

于 2016-05-26T07:29:27.170 回答