我在 Xcode 7 beta (7A120f) 中将我的项目升级到 Swift 2,并在 lldb 提示符下尝试 po self 时出现此错误:
warning: Swift error in module myApp:
Swift had fatal errors constructing the ast context for this module: cannot load underlying module for 'UIKit' Debug info from this module will be unavailable in the debugger.
然后我只剩下一个残缺的调试器(没有值)。无论我在哪里放置断点,都会发生这种情况。我试过:
- 清除派生数据
- 产品 > 清洁
- 重新启动 xcode
- 重启电脑
我能够创建一个新项目并在其中看到调试输出,所以这可能与我的项目如何被 xcode 迁移有关。
什么是 ast 上下文,我该如何更正它?
编辑: ast 是“抽象语法树”。仍然不知道如何修复它。
最佳答案
我在我的项目中遇到了同样的问题。 lldb 在尝试 po
一个对象时吐出的错误突出了这个问题:
(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.framework
中的 Crashlytics.h
伞头正在导入 Fabric/FABAAttributes.h
,它不是 Crashlytics 模块的一部分(即不在其 module.modulemap
中)。这是使用 CocoaPods 安装的 Crashlytics 3.1.0。
为什么 Xcode 7 将此视为 fatal error 我无法理解(这只是 6 中的警告)。在 Xcode 6 中,您可以通过在应用程序目标中启用“允许非模块化包含在框架模块中”(CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES
)build设置来解决这种“非模块化 header 包含”。
我没有运气让 Xcode 7 测试版支持上述标志(rdar://22044453 <-- 请重复)。
我发现让调试器正常工作的唯一解决方案是删除 Crashlytics pod。我注释掉 Crashlytics 和 Fabric pod,运行 pod install
,恢复调试,然后在发布前重新安装 pod。
我真的希望在 Xcode 7 推出 Beta 版时修复它。
关于xcode - Swift 在为此模块构建 ast 上下文时出现 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946434/