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

条带调试符号也关闭。


当前回答

如果你使用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

其他回答

事实证明,在将一个旧项目(Xcode 7.x+)导入到新的Xcode 8.3 (8E162)后,可能是由于编译器优化,Swift编译器优化级别默认设置为快速,单文件优化:

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

就我而言,这是因为我们引入了Swift包来组织代码。如果我尝试在Swift包中调试代码,我会看到这条消息。解决方案是重命名配置方案,使用单词Development而不是Dev,这样Xcode就可以相应地映射DEBUG配置。https://www.sobyte.net/post/2022-10/spm-in-xcode/

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

如果你使用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

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

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