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

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

当然,我不能调试代码。具体来说,我试图调试UIImageView+AFNetworking类别,这似乎是不可能的。改变代码没有效果(尝试NSLog等),当尝试进入编译器时,进入汇编代码,并显示UIImageView+TVASTAFNetworking作为类别名称,这在代码库中不存在。

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

更新 我忘了提到,优化器在发布和调试配置中都被设置为none,实际上我正在使用调试配置。

更新2

条带调试符号也关闭。


当前回答

如果你的项目使用Swift,在项目/目标配置中有两个单独的“优化级别”设置。

确保你把它们都设置正确:

在project Navigator窗格中选择您的项目 在“project”树下选择项目的设置 点击“构建设置”页签 搜索“优化级别”,你会看到两个设置,一个是LLVM,一个是swift。 为所讨论的构建配置设置适当的设置(LLVM为None [-O0], Swift为None [-0none])。

这样做解决了我的警告。

其他回答

编辑器->验证设置,然后确认所有更改。那么你应该

将Debug设置为None。

如果你的项目使用Swift,在项目/目标配置中有两个单独的“优化级别”设置。

确保你把它们都设置正确:

在project Navigator窗格中选择您的项目 在“project”树下选择项目的设置 点击“构建设置”页签 搜索“优化级别”,你会看到两个设置,一个是LLVM,一个是swift。 为所讨论的构建配置设置适当的设置(LLVM为None [-O0], Swift为None [-0none])。

这样做解决了我的警告。

如果你使用cocoapods和Objc,把下面的代码放在你的Podfile中,它适用于我的情况,注意选择config.name进行调试,不要更改Release

post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
          if config.name == 'Test'
              config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 0
          end
      end
    end
end

这可能是一个过度简化,但你是否为发布或优化(从Swift或LLVM中删除符号)构建太高了?如果是这样,编辑您的方案并切换到调试,或编辑您的构建设置为None(0),以进行swift或LLVM优化。

我今天也遇到了同样的问题,并且解决了它(至少在我的情况下)。 我也使用CocoaPods,我在运行我的测试目标(Swift与ObjC混合)时遇到了这个问题。

我使用的是Xcode 7.2, iOS 9.2 SDK。

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

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

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