Moj*_*aba 202 ios afnetworking-2 xcode7
尝试进入AFNetworking代码会生成以下警告:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
Run Code Online (Sandbox Code Playgroud)
当然,我无法调试代码.具体而言,我正在尝试调试UIImageView+AFNetworking看似不可能的类别.更改代码没有效果(尝试NSLog等),当尝试进入编译器时转到汇编代码并显示UIImageView+TVASTAFNetworking为代码库中不存在的类别名称.
使用Xcode 7. iOS 9和8. Cocoapods(无框架)
更新
我忘了提到Optimizer设置none为发布和调试配置,我实际上使用Debug配置.
更新2
Strip Debug Symbols 也关闭了.
Alb*_*ori 157
如果您的项目使用Swift,则项目/目标配置中有两个单独的"优化级别"设置.
确保正确设置它们:
None [-O0]对于LLVM和None [-0none]Swift).这样做解决了我的警告.
Nob*_*ica 116
看起来您的项目处于发布模式.发布模式通过大量优化来编译应用程序,但调试器讨厌优化,因此为了可靠地调试应用程序,您需要将其切换到调试模式,这会减少优化并添加一堆调试信息.要将其切换到调试模式:



Gom*_*ino 56
此警告仅在您遇到断点并且源位于启用了优化的项目中时出现,从而阻止您查看实际变量值(每个对象都显示为nil,即使它不是)
在我的情况下,它只发生在逐步调试cocoapod依赖时.
因此,即使您正确设置了主目标和项目设置(条带调试符号= OFF,优化级别为无),您也需要确保它与您点击断点的Pod项目相同.
val*_*ine 13
事实证明,在将旧项目(Xcode 7.x +)导入到新的Xcode 8.3(8E162)之后,可能由于编译器优化,Swift编译器 - 优化级别默认设置为快速,单文件优化:
将其更改为无,解决了问题:
我今天遇到了同样的问题,并想出来了(至少在我的情况下).我也在使用CocoaPods,我在运行测试目标时遇到了这个问题(Swift与ObjC混合).
我正在使用Xcode 7.2,iOS 9.2 SDK.
在下图中,您可以在我更改之前查看目标和项目的优化:
令人惊讶的是,即使已解析的优化为无[-O0],只有在将项目设置从-Os更改为-O0后,编译器才会停止优化目标.
您可以在下面看到我的最终设置:
这是我的解决方案......
根据gimino的回答,如果您使用cocoapods,请在Podfile中添加如下行:
xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug
Run Code Online (Sandbox Code Playgroud)
或者对于cocoapods版本> = 1.0(感谢Diejmon)
project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug
Run Code Online (Sandbox Code Playgroud)
MyProject除了标准的'Debug'之外还有'Debug - local','Debug - staging','Debug - PRODUCTION'作为调试配置
默认情况下,cocoapods通常会生成pod配置作为Release,这个Podfile行允许你告诉它它们是调试的.
小智 7
如果您需要禁用 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
Run Code Online (Sandbox Code Playgroud)
这已经很久了,但我终于解决了这个问题.有一个第三个优化标志LTO或者Link Time Optimization令人惊讶的是没有人在这里提到它,出于某种原因我也没有注意它.它就在Optimization Level设置之上,你可以在这里发布的许多屏幕截图中看到.
总而言之,您需要关闭3个不同的优化标志进行调试:
-flto)-O)有关LTO的更多信息:http: //llvm.org/docs/LinkTimeOptimization.html
| 归档时间: |
|
| 查看次数: |
76884 次 |
| 最近记录: |