Xcode 11デバッガーは非常に遅い-既知の問題?


95

最新のXcodeバージョン11.0(11A420a)に更新したため、デバッグは非常に遅く、面倒です。

編集: 11.1 GM(11A1027)にアップデートした後も、問題は同じです。

プロジェクトをコンパイルして、シミュレーターまたはデバイスで実行することは問題ありません。ただし、ブレークポイントに達すると、Xcodeは多かれ少なかれ使用できなくなります。

  • ブレークポイントに達すると、プログラムの実行はすぐに停止します。ただし、Xcodeは、コードウィンドウに位置を表示するのに最大30秒、変数ビューのコンテンツ(ブレークポイントで使用可能な変数の値と状態を表示する)をロードするのにさらに1分ほどかかります。
  • ステップインまたはステップオーバー機能を使用する場合、次のステップを実行するのに最大1分かかり、変数をロードするのにさらに1分かかります。

私は、3.2 GHzi7と32GBRAMを搭載したMacmini2018でXcodeを実行しています。以前、同じマシンでXcode10を問題なく使用しました。


「Xcodeslow」を検索すると、もちろん大量のスレッドと可能な解決策が表示されます。iOS開発者としての私の年から、Xcodeが最速で安定したプログラムではなかったことを知っています。しかし、それは今ほど悪くはありませんでした。

残念ながら、既知のトリック(XcodeまたはMacの再起動、プロジェクトのクリーニング、Xcodeライブラリフォルダーのクリーニングなど)はどれも効果がありませんでした。

したがって、大きな問題は次のとおりです。

これはXcode11の既知の問題ですか?既知の解決策はありますか?


初心者にとって、Xcodeの最新の安定バージョンは11A420aではなく11A1027です。私はそれを更新することから始めます。
ラファエルフランシスコ

2
MMH、11A420aは、App Storeで入手可能な最新バージョンです
アンドレイヘルフォルト

2
11A420aにアップデートしましたが、問題は同じです。
アンドレイヘル

2
同じ-私は11.1(11A1027)しようとした
nikansを

3
できることの1つは、Appleにバグレポートを提出することです。それが私が通常行うことです。彼らは最終的に返信します。通常、彼らはシステム情報を要求し、いくつかの診断を実行する必要があります。一般的に、Xcodeは低速であり、Appleがそれを修正する方法を知っているかどうかはわかりません。私は10コアのiMacProで実行していますが、Xcodeはまだ非常に遅いです。
モバイルベン

回答:


26

さて、私は同じ問題を抱えていましたが、最近、自分のスキームの診断を無効にするのを忘れていることがわかりました

ここに画像の説明を入力してください

実行構成を開きます->スキームの管理->スキームの編集->実行->診断タブ


7
答えてくれてありがとう。賛成票があるため、これで一部のユーザーの問題は解決したと思います。しかし、私の場合は、これまで何の違いもありませんでした。したがって、これは場合によっては役立つかもしれませんが、残念ながら一般的な解決策ではありません
AndreiHerford19年

アンドレイ「遅くなった」とはどういう意味か、定量的な指標を教えてください。SwiftとObjective-Cの混合言語プロジェクトのビルドは一般的に遅いことをご存知ですか?
GennadiyRyabkin19年

2
さて、それはすべて問題だと思います...まず第一に、これはビルド時間とは何の関係もありません。前に書いたように:「プロジェクトをコンパイルしてシミュレーターまたはデバイスで実行することは問題ありません。ただし、ブレークポイントに達すると、Xcodeは多かれ少なかれ使用できなくなります」
AndreiHerford19年

アンドレイはかっこいいですが、デバッガーについての私の答えです。[診断]ページにデバッガーの設定が表示されます。そして、ビルド時間については何もありません。具体的には、メモリ管理と割り当てに関する部分です。スキームと構成の名前を再確認するだけです。
GennadiyRyabkin19年

アンドレイ、Xcode11の上にカスタムLLDBをインストールしたとは思いません。これは最新のOS-Xを意味します。それはあなたの環境に特有のものです。すべてのスキーム設定をもう一度確認することをお勧めします。
GennadiyRyabkin19年

1

全体コンパイルとインクリメンタルコンパイルの動作を使用すると、パフォーマンスが向上することがあります。さらに、MojaveとCatalinaで実行すると、両方ともパフォーマンスの問題が発生するはずです。特に、Canvasプレビューやその他の新機能は前回のバージョンのXcodeよりも多くのCPU強度を必要とするため、Xcode 11を使用するとMojaveのパフォーマンスが低下すると予想されます(このバージョンのOS用に最適化されていないため)。Catalinaはベータ版であるため、追加の問題も発生すると予想されます。視力検査以外の具体的な対策は行っていません。コンパイル全体の最初の実行は遅いですが、その後は良くなるようです。

クイックヘルプの状態:

概要

この設定は、モジュール内のSwiftファイルを再構築する方法を制御します。*インクリメンタル:モジュール内の古いSwiftソースファイルのみを再構築し、必要に応じて複数のコンパイラプロセスを実行します。* モジュール全体:単一のコンパイラプロセスで、モジュール内のすべてのSwiftソースファイルを常に再構築します。宣言

SWIFT_COMPILATION_MODE値のタイプ

列挙(文字列)


4
最も近いブラックホールのイベントホライズンに近い場所にxcodeをテレポートしますが、ブレークポイントを使用してコンパイル時間は問題ありません。
nikans

2
答えが質問に記載されている問題を解決しない場合でも、著者が努力したことに気づきます。だから、それが大規模な反対票の理由ではないはずですよね?
アンドレイヘル

インクリメンタルは、実際には現在のデバッグビルドで推奨される設定です(WWDCトークdeveloper.apple.com/videos/play/wwdc2018/408を参照)。これはプロジェクトごとに異なるかもしれませんが、私たちの場合、クリーンビルドはモジュールビルド全体よりもわずかに遅く(5秒)、インクリメンタルビルドでは約40%(30秒)速くなりました。
マイクブライアント

@nikansのコンパイル時間は、他のIDEや他の言語と比較してまだ遅いです。しかし、最悪の場合はデバッガーであることを認めなければなりません。
ファイアトラップ

1

[スキームの編集]の各ターゲットでビルド並列化するのチェックを外してみてください。プロジェクトに多くのターゲットがある場合は、ビルドにかかる時間を節約できます。

編集スキーム:

ここに画像の説明を入力してください


0

Xcodeをセーフモードで実行してみましたか?理想的ではありませんが、これが効率的に実行できる唯一の方法でした。それは私のデバイスがセーフモードで検出されなくなった最近のカタリナアップデートまでです。だから私は今正方形に戻っています。


それは私のウイルス対策ソフトウェアが物事を遅くしたことが判明しました。それを無効にすると問題は解決しました。
ディノ

@beefonDinoはMacOのセーフモードについて言及していたと思います。詳細については、support.apple.com
en

0

私は2つの異なるケースで同じ問題を発見しました:

1)アプリがXcodeによって起動されない、つまり、「実行可能ファイルが起動されるのを待つ」というフラグが、SchemeRun設定の情報パネル内に設定されている。

2)スキーム設定で[バックグラウンドフェッチイベントによる起動]オプションが選択されています(ただし、これはデフォルトではありません)

Xcodeオプションの位置

Xcode 11.2.1(11B500)


0

私の場合(XCode 11.x、MacOS 10.15.2)、別のシングルステップ操作が進行中にシングルステップを実行した場合にのみ、デバッガーの極端な速度低下がトリガーされることがわかりました。に場合、つまりステップボタンを押すのが速すぎる。私の現在の回避策は、そうしないようにすることです。

純粋な推測ですが、XCode / LLDBが複数のブレークポイントを同時に処理しようとしていることが原因である可能性がありますか?1つを除くすべてのブレークポイントを削除してみて、それが問題を解決するかどうかを確認してください。

関連する場合:私は主にXCodeのC ++で作業し、あちこちに小さなObj-Cを使用しています。現在、Swiftは一切使用していません。


0

私はこれを永遠に扱ってきましたが、ついにそれを理解しました。〜/ .lldbinitファイルの次の行でした。

break set -F '-[UIView layoutIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc
break set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc

私はそれらの行をコメントアウトしました、そして今それはデバッガーなしとほぼ同じくらい速いです!


-2

238個の未使用のブレークポイントを設定しました。それらを削除すると、(診断がオンになっていても)再び高速になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.