2015-06-19 45 views
42

我在Xcode 7测试版(7A120f)升级我的项目斯威夫特2和得到这个错误在LLDB提示试图婆的自我时:斯威夫特的致命错误构建AST上下文这个模块

警告:模块myApp中的Swift错误:

Swift在构建此模块的ast上下文时存在致命错误:无法为“UIKit”加载底层模块 调试器中将无法使用此模块的调试信息。

我然后留下一个残缺的调试器(没有值)。无论我在哪里放置断点,都会发生这种情况。我已经试过:

  • 清理后的数据
  • 产品>清洁
  • 重新启动的Xcode
  • 重启MAC

我能够创建一个新的项目,看到调试输出它,所以这可能与我的项目如何被xcode迁移有关。

什么是ast语境,我该如何纠正它?

编辑: ast是'抽象语法树'。仍然不知道如何解决它。

+2

当前试图解决导入自定义框架时调试器损坏的相同或类似问题。 http://stackoverflow.com/questions/31219422/swift-debugger-does-not-show-debugger-does-not-show-variable-values-when-importing-objc-framework – LearnCocos2D

+7

与'Crashlytics'相同的问题 –

+0

你可以发布一个示例项目问题或者将关键部分放到操场上? –

回答

1

更换为了解决这个问题我在我的所有文件和设置手动迁移到新的Xcode项目。没有别的工作。可能有更好的解决方法,但我不能再花更多时间去寻找它。

+0

这是我唯一的解决方案,谢谢! –

5

我在我的项目中遇到同样的问题。该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.h伞头在Crashlytics.framework正在导入Fabric/FABAttributes.h,这不是Crashlytics模块的一部分(即,不是在它的module.modulemap)。这是使用CocoaPods安装的Crashlytics 3.1.0。

为什么Xcode 7认为这是一个致命的错误超出了我(这只是6中的警告)。在Xcode 6中,您可以通过在应用程序目标中启用“允许非模块化包含在框架模块中”(CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES)构建设置来解决这类“非模块化头包含”问题。

我已经没有运气得到Xcode 7贝塔斯兑现上述国旗(rdar://22044453 < - 请dup)。

我发现调试器工作的唯一解决方案是去除Crashlytics窗格。我将Crashlytics和Fabric pod注释掉,运行pod install,恢复调试,然后在发布之前重新安装pod。

我真的希望Xcode 7在测试版发布之前就已经修复了这个问题。

+0

,这似乎还没有解决。 – Lifely

+0

就我而言,Crashlytics通过将#import <>更改为@import Fabric来解决此问题。 – phatblat

+0

我还发现了一个解决方案,我使用的Fabric依赖已被弃用,更新它解决了问题。 – Lifely

2

检查桥接报头,如果你有

@import Crashlytics;

(或任何其他框架,导致错误。在我的情况下,它是GoogleMobileAds

尝试

#import <Crashlytics/Crashlytics.h>

1

我有同样的问题。 在大多数情况下,当您在Swift项目中使用objective-c框架或库时,会出现此问题。

该问题已通过仅在Bridging-Header中导入objective-c框架或库来解决。

#import <SampleFramework/SampleFramework.h> 

,并删除这个框架的所有进口斯威夫特文件

import SampleFramework // <-- Remove it 

然后清理并生成。

确保您对项目中的所有Objective-c框架或库都执行了此过程。

希望这会有所帮助!