2015-06-19 37 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框架或庫都執行了此過程。

希望這會有所幫助!