1. ホーム
  2. ios

[解決済み] SourceKitServiceはCPUを消費し、Xcodeを停止させる

2022-05-18 02:51:46

質問

これは Beta の問題ではありません。 私は Xcode 6.0.1、製品リリースにいます。私が抱えている問題は、私が作業しているコードをビルドまたは実行しようとすると、Xcode が長時間応答しなくなり、SourceKitService が CPU の 400% 以上を消費します (Activity Monitor によると)。 この問題は、ここ数日の時点では新しいのですが、奇妙なことに、私は9月17日に正式にリリースされたXcode 6.0を使用していました。 私は、この問題の修正が含まれていることを期待して、6.0.1 にアップグレードしました。

問題が何であるかについて、何か考えがありますか。

どのように解決するのですか?

今日の午後早く、Xcode 6.1.1 (ベータ版ではなく、正式なリリース版) でこの問題に遭遇しました。私は、Playground 上でいくつかのコードを実行していたので、それが原因ではないかと疑っていました。CPU はほぼ 100% に固定され、Xcode はビルドを完了することができませんでした。

そこで、私がしたことは次のとおりです。

1. Activity Monitor" を開き、SourceKitService が主な CPU ホッグであることを示しました。

2. Activity Monitor" 内で SourceKitService をダブルクリックし、"Open Files and Ports" セクションをクリックすると、特定のフォルダーに対して /Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/ ディレクトリ下のファイルで作業していることが示されました。

3. 指定されたフォルダーを削除(コマンドラインから、rm -rf を使用)。キャッシュは、以下の情報に基づいて再生成されます。 Xcode Derived data フォルダの内容を安全に削除できますか。 .

4. 再びアクティビティモニタを使用して、SourceKitServerを強制終了します。Xcode内でSourceKitServiceがクラッシュしたという今やすっかりお馴染みのサインを確認(だからSourceKitServiceはお馴染みの音だったのか!)。

5. ステップ3を繰り返した。

Mac は再び、平和になりました。データは失われず、Xcode を再起動する必要すらありませんでした (これは、私が失敗したときに試したものです)。結論としては、ModuleCache が SourceKitService をループさせているようで、フォルダを削除することで解決したようです。これがあなたにも効くことを願っています。

Bootnoteです。

ちなみに、SourceKitServiceの問題の原因は、Swiftのクラスで配列の宣言が長すぎたことです。配列のエントリーが200以上あったのです。それを30個に減らすと、エラーは解消されました。ということは、appleのコードにある種のスタックオーバーフローが原因で問題が発生したのかもしれません(シャレです)。