XCode不会破坏#include'dCPP文件

时间:2013-07-16 15:10:59

标签: c++ xcode include breakpoints

如果您包含来自其他CPP文件的CPP文件,则XCode拒绝在所包含的CPP文件中的任何断点处中断。我要向Apple提出一个错误但只是想在这里提一下,以防其他人碰到这个并且可能找到方法。

有很好的理由说明您可能希望在CPP文件中包含CPP文件,我不会在此处介绍。我只想说,我不能简单地重新安排项目直接编译包含的文件。

示例:一个非常简单的iPhone项目

main.mm

extern void FunctionInSource1( int a );

int main(int argc, char * argv[])
{
    FunctionInSource1( 1 );

    return 0;
}

source1.cpp

#include "source2.cpp"

void FunctionInSource1( int a )
{
    int b = a;

    FunctionInSource2( b );

    return;
}

source2.cpp

void FunctionInSource2( int b )
{
    int c = b;

    c = c + 1;

    return;
}

main.mm和source1.cpp是目标的成员,即它们被设置为构建。 source2.cpp不是目标的成员,除非包含在source1.cpp

中,否则不会编译

在source2.cpp中的任何位置设置断点都无法触发。其他地方的断点工作正常。注:你仍然可以从source1.cpp步入source2.cpp,例如,不要直接在source2.cpp中中断

如果有人提出解决方案,我会很高兴听到它。

最高

1 个答案:

答案 0 :(得分:14)

感谢Apple开发人员论坛上的回复,我现在已经解决了这个问题。

编译器内嵌这些文件,默认情况下,LLDB不会在内联文件中断。要强制它中断,您需要在.lldbinit文件中添加一个设置。

编辑(或创建)〜/ .lldbinit 文件并添加以下行:

settings set target.inline-breakpoint-strategy always

就这么简单!