XCode 不会中断 #include 的 CPP 文件

XCode doesn't break in #include'd CPP files

本文关键字:CPP 文件 #include 中断 XCode      更新时间:2023-10-16

如果包含来自另一个CPP文件的CPP文件,XCode将拒绝在包含的CPP文件中的任何断点处中断。我要向苹果公司提出一个错误,但我只想在这里提到它,以防其他人遇到这个问题,并可能找到解决它的方法

有很好的理由,你可能想包括CPP文件中的CPP文件,我不会在这里讨论。可以说,我不能简单地重新安排项目来直接编译包含的文件。

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

main.mm

extern void FunctionInSource1( int a );
int main(int argc, char * argv[])
{
    FunctionInSource1( 1 );
    return 0;
}

源1.cpp

#include "source2.cpp"
void FunctionInSource1( int a )
{
    int b = a;
    FunctionInSource2( b );
    return;
}

源2.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中中断

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

最大

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

编译器正在排列这些文件,默认情况下LLDB不会在排列的文件中中断。要强制中断它,您需要在.lldinit文件中添加一个设置。

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

settings set target.inline-breakpoint-strategy always

就这么简单!