Xcode 构建和调试奇怪的行为?

Posted

技术标签:

【中文标题】Xcode 构建和调试奇怪的行为?【英文标题】:Xcode build & debug strange behaviour? 【发布时间】:2009-12-11 20:09:20 【问题描述】:

这可能有一个非常简单的答案......我有一个项目,我在 program.m 中设置了一个活动断点。我的问题是,当我点击“构建和调试”时,主视图中的编辑器和调试器中的编辑器都会立即放入其中一个 apples .h 文件的代码中。

我将代码复制到一个新项目中,它工作正常,我只是好奇我对这个项目做了什么来让这开始发生?

EDIT_001

我将范围缩小到代码顶部的这些行。我的断点进一步向下,但是在点击“构建和调试”时,两个编辑器都会跳到“CFByteOrder.h”,尽管执行确实会正常继续,但很难看到你在代码中的位置。

我正在使用 10.6 |调试 | x86_64,断点可以在这些行下方的任何位置,它总是跳转到 CFByteOrder.h,注释掉这 3 行,一切正常。如果您将代码复制并粘贴到新项目中,也一切正常,很奇怪,也许我不小心在项目上设置了一些选项。

NSLog(@"MDDStructure V002 ... ");
if(CFByteOrderGetCurrent() == CFByteOrderLittleEndian) 
    NSLog(@"BYTEORDER: Little Endian");

EDIT_002

我将把它标记为已接受,因为我无法在新场景中重现该行为,所以我只能得出结论,我的原始项目以某种方式/某处损坏了。

加里

【问题讨论】:

您必须具体告诉我们您的断点在哪里以及它在 Apple 标头中的停止位置。如果您的项目是在发布配置中构建的,那么您正在构建优化的代码,并且调试可能很奇怪。 【参考方案1】:

CFByteOrderGetCurrent() 是内联代码,因此您在标题中看到的实际上是编译到源文件中的代码。至于为什么你的断点过早停止,可能是很多事情,但首先我要确保 a) 调试符号类型设置为 DWARF 或 DWARF 使用 dSYM,以及 b) 你清理所有并重建,确保您的调试符号与您的可执行文件匹配。

【讨论】:

以上是关于Xcode 构建和调试奇怪的行为?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 在调试时失去与设备的连接

Xcode 9.2无法奇怪地调试自定义键盘扩展

调试优化的构建会导致程序行为不同吗?

如何清理 xcode 构建缓存?

xcode 构建失败,错误代码 65,没有指示性消息

如何调试发行版构建