【问题标题】:Breakpoints ignored in Xcode when using Makefile to build使用 Makefile 构建时 Xcode 中忽略的断点
【发布时间】:2012-11-10 03:40:55
【问题描述】:

我正在尝试在 Xcode 中设置一个使用 Makefile 构建的 C++ 项目。

我从一个完全空的项目(空模板)开始,添加了一个外部构建系统目标并正确设置了路径:

但是断点不起作用。我用单个 .cpp 文件创建了一个非常简单的测试项目,但无论我尝试什么,断点都会被忽略:

按照other question 中的建议,我尝试转到 Product -> Edit Scheme... 并选中“使用自定义工作目录”并将其设置为与可执行文件相同的目录,但没有帮助.

我所有的文件(源文件、makefile、可执行文件、项目文件)都在 Finder(以及 Xcode 中)的一个文件夹中。

如果重要的话,我的 Makefile 也很简单:

BUILD = .
TARGET = $(BUILD)/test
all:
    g++  test.cpp  -o $(TARGET)

【问题讨论】:

    标签: c++ xcode makefile lldb


    【解决方案1】:

    在 gcc 命令中添加-g 开关以包含如下调试符号:

    BUILD = .
    TARGET = $(BUILD)/test
    all:
        g++ -g test.cpp  -o $(TARGET)
    

    编辑:并选择了另一个目标名称,因为 test 是大多数 shell 中的 shell 内置命令,您可能会在从命令行调用程序时遇到麻烦(即使我不确定 Mac OS)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-10-18
        • 2015-07-06
        • 2012-12-31
        • 1970-01-01
        • 2015-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多