2012-05-09 48 views
11

我的Xcode從昨天開始在中型項目(大約200個源文件)上工作時表現非常沉重。項目編譯正確並在模擬器和設備中運行。我不使用任何第三方庫,除了少數廣泛使用的包含(如JSON或Facebook ios sdk)。Xcode 4.3.2和100%的CPU在空閒時間不斷

即使處於閒置狀態(無索引,無編譯,無編輯),它也會全速使用CPU。 RAM的使用相對正常(300-50MB)。

我的機器使用:Core 2 Duo 3.04Ghz CPU,8GB內存和Vertex OCZ 3 SSD驅動器。

我曾嘗試在計算器中找到的每個建議的解決方案:

  1. 清理項目
  2. 清洗導出的數據在管理中主辦方
  3. 清理倉庫
  4. 清理xcodeproject從工作區和用戶數據文件打包的建議
  5. 這裏: https://stackoverflow.com/a/8165886/229229(它只是暫時的幫助,並在分鐘左右後重新開始)。
  6. 重新啓動Xcode很多次(與4中的效果相同)。
  7. 禁用 「實時問題」
  8. 甚至重新安裝的Xcode

沒有什麼幫助。在大多數情況下,Xcode索引項目一段時間,然後回到正常的性能,但一段時間後又變得不可用。 CPU跳回95-100%爲雙核,智能掛起,等等

我附上的Xcode的過程是如何通過儀器看到的截圖:

enter image description here enter image description here enter image description here enter image description here enter image description here

UPDATE: 希望的時刻,我周圍幾個

移動解決了這個問題後,從標題到執行文件,並與前置聲明交換他們

#import "header.h"

語句......問題過了一會又回來了。 我正在添加控制檯日誌。 奇怪的是,在我退出之後,而不是在運行itsef期間,與Xcode相關的日誌顯示出來。

控制檯日誌:

5/11/12 9:27:03.777 AM [0x0-0x45045].com.apple.dt.Xcode: com.apple.dt.instruments.backgroundinstruments: Already loaded 
5/11/12 9:27:05.571 AM Xcode: Performance: Please update this scripting addition to supply a value for ThreadSafe for each event handler: "/Library/ScriptingAdditions/SIMBL.osax" 
5/11/12 9:27:58.168 AM Xcode: ERROR: Failed to create an alert for ID "enabled" based on defaults: 1 
+0

其他項目呢?它的行爲方式是否相同? –

+1

我的猜測是,你有一個文件或一組文件,使所需要的語法高亮,代碼完成等進入無限循環(這將是一個錯誤)的解析。也許'lsof'可以告訴你它正在處理哪個文件。使用'lsof -p '來檢查正在運行的進程。 – mvds

+0

@Ondra Peterka:不,它只是在這個行爲中表現出來。 – Lukasz

回答

5

什麼停在我的惡夢:

  1. 改變總是搜索用戶路徑NO在項目構建設置(粗體)。
  2. 刪除-objC標誌其他鏈接器標誌(也是粗體設置)。

然後刪除Derived Data並等到Xcode重新編制索引。

我不確定他們當中哪一位幫助了我,因爲我同時改變了他們兩位,而且我如此落後於我的日程安排,我沒有時間去測試它。當我在業餘時間重現錯誤和解決方案時,我會改進這個答案。

然而,有一個提示: * 重新思考和重新檢查你的項目/目標構建設置。 *

這是極有可能的是這種奇怪的行爲可以通過構建設置一些不幸的組合引起的。

+0

在我的情況下,它總是搜索用戶路徑,謝謝! –

+0

我可以從其他鏈接器標誌中刪除-objC標誌和all_load,總是搜索用戶路徑已經在NO。所以我想這是兩者的結合。謝謝。 – Charles

+1

刪除-objC對我來說就像魔術一樣工作 – eckyzero

1

它看起來像它的時間花費在解析包含在PCH ObjC。

  • 有多少個PCH必須生成?在你的項目中,這將是一個用於C,一個用於ObjC,一個用於C++,一個用於ObjC++,用於項目中使用的每個方言/ lang以及任何相關目標。也就是說,如果您的應用程序的PCH中包含依賴庫,並且您正在對該庫進行黑客攻擊,則每次更改pch包含的標頭時,應用程序目標中的所有代碼含義都必須失效並再次解析。如果你的目標編譯一個C文件,它需要一個C的PCH。如果它需要一個用於ObjC,它將需要爲ObjC生成一個。
  • 您多久更換一次PCH(或包含的任何東西)?
  • 從PCH中刪除包含。看到PCH中包含的每個鏈接框架並不罕見(避免這樣做!)。
  • 如果更改構建或預處理器設置,則可能需要每次重建目標代碼感測索引完全
  • 您是否嘗試禁用實時問題?
+0

禁用實時問題也無濟於事。我不經常改變PCH。我只添加了Constants.h(僅包含一些#define(s)),但很久以前,項目在此之後很長一段時間表現良好。 – Lukasz

+0

我投票贊成,因爲它指出我要重新檢查和重新設計包括結構和搜索路徑,這似乎有所幫助。 – Lukasz

0

在我的項目(所有這些)上它是自動完成/智能感知。當我在我的.h文件中更改了一行代碼時,它出現了故障,+ 100%的CPU使用率(超過一個內核)。 我剛剛禁用了它,現在我必須爲自己考慮更多一點(就像我以前在Windows上所做的那樣),並且在CPU使用率較低的情況下效果很好。

3

我的所有項目都會不時這樣做。我可以關閉X代碼並重新啓動,它會運行良好一段時間,然後返回使用200%的CPU時間(兩個內核完全加載)。

我的解決方案是使用AppCode作爲我的主IDE(具有更好的IDE的額外好處,但這是另一回事)。當我需要編輯故事板並在完成後將其關閉時,我才啓動XCode - 通常可以將問題保持在原位。

AppCode運行相同的項目文件/結構有更好,更快的索引,並且從未遇到過這個問題,所以我看不到這是一個設置/配置問題 - 它必須是XCode中的一個錯誤。因此,我不會浪費時間更改代碼結構,因爲它很可能只會延遲問題,而不會解決問題。

-1

我曾經遇到這樣的problem.it由git.Although造成的,我不知道混帳非常well.i除去項目目錄中名爲git的文件,並將其轉向normal.by的方式, .git是隱藏的。

2

沒辦法知道OP實際上是否有不同的根本原因,但對我來說,它似乎是一個Git的Xcode故障。 添加/提交我目前的更改解決了我的問題。下面是完整的場景,我做了什麼得到它固定:

  • 環境:
    • 版本的Xcode 5.1.1(5B1008)
    • 的MacBook Pro OS X 10.9.2
    • 2 GHz英特爾Core i7,8GB內存
  • 我注意到Xcode開始吃我的CPU不斷%。
  • 不知道它到底什麼時候開始,但Xcode確實試圖做一個快照凍結(400%CPU使用幾分鐘,直到我強制退出Xcode)
  • 重新打開後,我注意到Xcode仍然無限期%CPU使用率。
  • 關閉所有項目不起作用。
  • 刪除所有派生數據並重新啓動都不起作用。
  • 卸載Xcode並在第一次承諾的時候重新安裝諾言,但是一旦我重新打開了我的主項目,CPU就會返回一個不變的CPU使用率。 (索引完成後)
  • 關閉困難的項目並沒有幫助。 Xcode現在再次陷入永久殺死200%CPU的土地。

環顧堆棧溢出之後,多人暗指git是一個問題。

  • 我有一個稍微複雜的git回購(在主Xcode項目中有一個子模塊回購和一個子項目)。
  • 我在回購的主要回購和子模塊部分都有待處理的更改。
  • 我關閉了Xcode,並添加了git &承諾了我所有的當前更改。
  • 重新打開Xcode和VIOLA!沒有更多的CPU被殺死。返回到0.0%空閒使用率。

Xcode 5.1.x似乎在其他方面也與我一樣困擾於git(有時不會在GUI中發現變化等),因此可能存在Xcode git集成錯誤。

+0

謝謝你爲我解決了它。提交我的更改,使Xcode停止處理/索引。 Xcode 7.3.1和OS X 10.11.5。我的xcodeproject是iOS的混合swift/objc,它使用了carthage並嵌入了幾個框架。 – neoneye