【问题标题】:XCode doesn't break in #include'd CPP filesXCode 不会中断 #include'd CPP 文件
【发布时间】:2013-07-14 20:40:53
【问题描述】:

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

您可能希望从 CPP 文件中包含 CPP 文件,这是有充分理由的,我不会在此详述。可以这么说,我不能简单地重新安排项目来直接编译包含的文件。

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

ma​​in.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 中中断

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

最大

【问题讨论】:

  • 你还没有使用优化,让编译器内联整个事情?

标签: c++ xcode include breakpoints


【解决方案1】:

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

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

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

settings set target.inline-breakpoint-strategy always

就这么简单!

【讨论】:

  • 哇。保存文件,再次运行项目,断点命中。谢谢!
猜你喜欢
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2013-01-24
  • 2023-03-10
  • 2011-11-12
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多