尝试进入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

条带调试符号也关闭。


当前回答

此警告仅在遇到断点但源位于已启用优化的项目中时出现。这阻止了你观察真正的变量值(每个对象都显示为nil,即使它不是)

你在使用CocoaPods吗?

在我的例子中,它只在通过cocoapod依赖项一步一步地调试时发生。

因此,即使你已经正确设置了主目标和项目设置(条带调试符号=OFF,优化级别为None),你需要确保它与你击中断点的Pod项目相同。

其他回答

为了防止有人在调试内部使用C库的pod时遇到这个问题,除了线程中列出的所有其他内容外,还必须在项目设置中更改另一件事以使其工作。

转到Pods项目设置-> Your C-using target -> Build settings -> Apple Clang - Custom Compiler Flags -> Other C Flags并删除以某种方式获得的- o3标志。

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

因此,解决方案是确保请求的url格式良好。更多关于我的案件的信息,类似的报道也在这里。

如果你需要禁用你的Swift pod的优化,这样你就可以调试它们了,在你的Podfile中添加以下内容。这将只对调试版本禁用优化。

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.name == "Debug"
        config.build_settings["SWIFT_OPTIMIZATION_LEVEL"] = "-Onone"
      end
    end
  end
end

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

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

将Debug设置为None。