“项目名称”是用优化编译的 – 步进可能performance怪异; variables可能不可用

尝试进入AFNetworking代码会产生以下警告:

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available. 

当然,我无法debugging代码。 具体来说,我试图debuggingUIImageView+AFNetworking类似乎不可能。 更改代码没有效果(试过NSLog等),当试图在编译器中进入汇编代码,并显示UIImageView+TVASTAFNetworking作为类别名称,它不存在于代码库中的任何地方。

在这里输入图像说明

使用Xcode 7. iOS 9和8. Cocoapods(无框架)

更新我忘了提到Optimizer设置为none ,无论是释放和debuggingconfiguration,我实际上使用Debugconfiguration。

在这里输入图像说明

更新2

Strip Debug Symbols也是closures的。

如果您的项目使用Swift,那么项目/目标configuration中有两个单独的“优化级别”设置。

确保你正确地设置它们:

  1. 在“项目导航器”窗格中select您的项目
  2. 在“PROJECT”树下select您的项目设置
  3. 点击“Build Settings”标签
  4. search“优化级别”,你会看到两个设置,一个用于LLVM,另一个用于快速。
  5. 为相关的构buildconfiguration设置适当的设置(LLVM None [-O0] None [-0none] ,Swift None [-0none]

被编译与优化步进可能表现奇怪的变量可能不可用

这样做解决了我的警告。

看起来您的项目处于发行模式。 发布模式编译应用程序有很多优化,但debugging器讨厌优化,所以要可靠地debugging应用程序,您需要切换到debugging模式,这减less了优化,并添加了一堆debugging信息。 要切换到debugging模式:

  • 点击Xcode左上angular的scheme。

点击Xcode左上角的方案。

  • select“编辑scheme…”

选择“编辑方案...”

  • 点击“Build Configuration”下拉菜单。 并将其更改为debugging模式。

点击“Build Configuration”下拉菜单。

OK发现问题,这个警告只出现在你遇到一个断点时,源代码在启用了优化的项目中,从而阻止你观察真正的variables值(每个对象显示为零,即使它不是)

在我的情况下,它只发生在逐步debugging通过一个cocoapod依赖关系。

因此,即使您正确设置了主要目标和项目设置(剥离debugging符号= OFF,优化级别无),也需要确保Pod projet与您的断点相同。

在这里输入图像说明

Editor – > Validate Settings然后确认所有更改。 那么你应该得到 Swift编译器优化级别

将debugging设置为None

原来,在将旧项目(Xcode 7.x +)导入到新的Xcode 8.3(8E162)之后,可能是由于编译器的优化,默认情况下, Swift Compiler – Optimization Level被设置为Fast,Single-File Optimization

之前

将其更改为无,解决了问题:

后

这是我的解决scheme…

沿着gimino的答案,如果你正在使用cocoapods,像这样的一行添加到Podfile:

 xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug 

或cocoapods版本> = 1.0(感谢Diejmon)

 project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug 

除了标准的“debugging”,MyProject具有“debugging – 本地”,“debugging – 分段”,“debugging – 生产”

默认情况下,cocoapods通常会像Release一样生成podconfiguration,这个Podfile行允许您告诉它们正在debugging。

我今天遇到了同样的问题,并把它弄清楚了(至less在我的情况下)。 我也使用CocoaPods,并且在运行我的testing目标(Swift与ObjC混合)时遇到了这个问题。

我正在使用Xcode 7.2和iOS 9.2 SDK。

在下面的图片中,您可以在更改之前看到目标和项目的优化:

更改前的优化级别

令人惊讶的是,即使已解决的优化是无[-O0] ,只有在将项目设置从-Os更改为-O0之后,编译器才会停止优化目标。

在下面你可以看到我的最终设置:

更改后的优化级别

已经很久了,但我终于解决了这个问题。 有第三个优化标志LTOLink Time Optimization ,令人惊讶的是没有人在这里提到它,由于某种原因,我也没有注意到它。 正如您在这里发布的许多屏幕截图中所看到的那样,它就位于Optimization Level设置的上方。

所以总结一下,有三种不同的优化标志要closures进行debugging:

  • LLVM链路时间优化( -flto
  • LLVM优化级别( -O
  • Swift编译器优化级别

在这里输入图像说明

有关LTO的更多信息: http : //llvm.org/docs/LinkTimeOptimization.html

你确定你的debuggingconfiguration没有优化代码(它不应该)? 看起来你不小心启用了优化debuggingconfiguration,你应该把它从目标的设置closures。

这个错误在我身上发生了两次,并且在每个情况下都是在用于请求一个服务的URL参数上有错误。 在其中一种情况下,URL在端口部分有一些空间,一些可选值没有被解包。

所以修正是为了确保请求的url格式正确。 有关我的案例的更多信息,以及类似的报告在这里相同。

我所做的只是清洁( Product > Clean )我的项目并再次运行