我在Xcode 7 beta(7A120f)中将我的项目升级到Swift 2,并在lldb提示符下尝试 po self 时出现此错误:
警告:模块myApp中的Swift错误:
Swift在为这个模块构建ast上下文时遇到了致命的错误:无法为UIKit' UIKit加载底层模块。 调试器中将无法使用此模块的调试信息。
然后我离开了一个残缺的调试器(没有值)。无论我在哪里放置断点,都会发生这种情况。我试过了:
我能够创建一个新项目并在其中查看调试输出,因此这可能与我的项目如何通过xcode迁移有关。
什么是上下文,我该如何纠正?
编辑: ast是'抽象语法树'。仍然不知道如何修复它。
答案 0 :(得分:5)
我的项目中遇到了同样的问题。尝试po
某个对象时lldb吐出的错误突出显示了该问题:
(lldb)po fileURL
warning: Swift error in module <APP_NAME>:
Swift had fatal errors constructing the ast context for this module: <module-includes>:1:9: note: in file included from <module-includes>:1:
#import "Headers/Crashlytics.h"
^
<APP_PATH>/Pods/Crashlytics/Crashlytics.framework/Headers/Crashlytics.h:10:9: error: include of non-modular header inside framework module 'Crashlytics'
#import <Fabric/FABAttributes.h>
^
Crashlytics.h
中的Crashlytics.framework
总标头正在导入Fabric/FABAttributes.h
,这不是Crashlytics模块的一部分(即不在其module.modulemap
中)。这是使用CocoaPods安装的Crashlytics 3.1.0。
为什么Xcode 7将此视为致命错误超出了我(这只是6中的警告)。在Xcode 6中,您可以解决这种非模块化标题包括&#34;通过启用框架模块中的&#34;允许非模块化包含&#34; (CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES
)您的应用程序目标中的构建设置。
我没有运气获得Xcode 7测试版以兑现上述标志(rdar://22044453&lt; - 请重复)。
我发现让调试器工作的唯一解决方案是删除Crashlytics pod。我评论了Crashlytics和Fabric pod,运行pod install
,恢复调试,然后在发布之前重新安装pod。
我真的希望在测试结束时Xcode 7中已经修复了这个问题。
答案 1 :(得分:2)
检查您的桥接标头,如果您有
@import Crashlytics;
(或导致错误的任何其他框架。在我的情况下,它是GoogleMobileAds
)
尝试替换
#import <Crashlytics/Crashlytics.h>
答案 2 :(得分:1)
要解决此问题,我手动将所有文件和设置迁移到新的xcode项目。没有其他工作。可能有更好的解决办法,但我不能再花时间寻找它了。