Le débogueur Xcode 11 est extrêmement lent - Un problème connu?

95

Depuis que j'ai mis à jour la dernière version de Xcode 11.0 (11A420a), le débogage est extrêmement lent et fastidieux.

EDIT: Après la mise à jour vers 11.1 GM (11A1027), le problème est toujours le même.

Compiler un projet et l'exécuter dans un simulateur ou sur un appareil ne pose aucun problème. Cependant, lorsque vous atteignez un point d'arrêt, Xcode devient plus ou moins inutilisable:

  • L'exécution du programme s'arrête immédiatement lorsque le point d'arrêt est atteint. Cependant, Xcode a besoin de 30 secondes pour afficher la position dans la fenêtre de code et une minute environ pour charger le contenu de la vue variable (qui montre les valeurs et les états des variables disponibles au point d'arrêt).
  • Si j'utilise les fonctionnalités Pas à pas ou Pas à pas , il faut jusqu'à une minute pour effectuer l'étape suivante et encore une minute pour charger les variables.

J'exécute Xcode sur un Mac mini 2018 avec un i7 3,2 GHz et 32 ​​Go de RAM. J'ai déjà utilisé Xcode 10 sur la même machine sans aucun problème.


La recherche de "Xcode slow" fait apparaître une tonne de threads et des solutions possibles bien sûr. De mes années en tant que développeur iOS, je sais que Xcode n'a jamais été le programme le plus rapide et le plus stable. Cependant, ce n'était jamais aussi mauvais que maintenant.

Malheureusement, aucune des astuces connues (redémarrage de Xcode ou du Mac, nettoyage du projet, nettoyage des dossiers de la bibliothèque Xcode, etc. n'a eu aucun effet,

La grande question est donc:

Est-ce un problème connu dans Xcode 11? Existe-t-il des solutions connues?

Andrei Herford
la source
Eh bien, pour commencer, la dernière version stable de Xcode est 11A1027, pas 11A420a. Je commencerais par le mettre à jour.
Rafael Francisco
2
Mmh, 11A420a est la dernière version disponible dans l'App Store
Andrei Herford
2
J'ai maintenant mis à jour vers 11A420a et le problème est toujours le même.
Andrei Herford
2
J'ai essayé 11.1 (11A1027) - idem
nikans
3
Une chose que vous pouvez faire est de déposer un rapport de bogue auprès d'Apple. C'est ce que je fais généralement. Ils répondent finalement. En règle générale, ils demandent des informations sur le système et nécessitent que vous exécutiez des diagnostics. En général, Xcode est lent et je ne suis pas sûr qu'Apple sache comment y remédier. J'utilise un iMac Pro à 10 cœurs et Xcode est toujours lent.
Mobile Ben

Réponses:

26

Eh bien, j'ai eu le même problème et j'ai récemment compris que j'avais juste oublié de désactiver les diagnostics pour mon schéma

entrez la description de l'image ici

Ouvrez vos configurations d'exécution -> Gérer les schémas -> Modifier le schéma -> Exécuter -> onglet Diagnostics

Gennadiy Ryabkin
la source
7
Merci d'avoir répondu. En raison des votes positifs, je suppose que cela a résolu le problème de certains utilisateurs. Cependant, dans mon cas, cela n'a fait aucune différence. Donc, bien que cela puisse aider dans certains cas, ce n'est malheureusement pas une solution générale
Andrei Herford
Andrei Pourriez-vous fournir quelques mesures quantitatives ce que signifie «est devenu plus lent»? Savez-vous que les versions de projets mixtes de Swift et d'Objective-C sont généralement plus lentes?
Gennadiy Ryabkin
2
Eh bien, je pense que tout est dans la question ... Tout d'abord, cela n'a rien à voir avec le temps de construction. Comme écrit précédemment: "Compiler un projet et l'exécuter dans un simulateur ou sur un appareil ne pose aucun problème. Cependant, lorsque vous atteignez un point d'arrêt, Xcode devient plus ou moins inutilisable"
Andrei Herford
Cool Andrei, mais ma réponse sur le débogueur. La page Diagnostics affiche les paramètres du débogueur. Et il n'y a rien sur le temps de construction. Plus précisément la partie sur la gestion de la mémoire et les allocations. Vérifiez simplement le nom de votre schéma et de votre configuration.
Gennadiy Ryabkin
Andrei, je ne pense pas que vous ayez installé un LLDB personnalisé au-dessus de votre Xcode 11 qui implique le dernier OS-X. C'est quelque chose de spécifique à votre environnement. Je recommanderais de revérifier tous les paramètres du schéma une fois de plus.
Gennadiy Ryabkin
1

J'ai constaté des améliorations de performances lors de l'utilisation du comportement Compilation complète ou incrémentielle. De plus, fonctionnant sur Mojave et Catalina devraient tous deux présenter des problèmes de performances. Plus précisément, étant donné que l'aperçu de Canvas et d'autres nouvelles fonctionnalités nécessitent plus d'intensité du processeur que la dernière version de Xcode, je m'attendrais à ce que les performances de Mojave soient inférieures lors de l'utilisation de Xcode 11 (car il n'est pas optimisé pour cette version du système d'exploitation). Avec Catalina étant en version bêta, je m'attendrais à voir également des problèmes supplémentaires. Je n'ai pas pris de mesures spécifiques autres que le test de la vue. L'exécution initiale sur Whole Compilation est lente mais semble s'améliorer par la suite.

Aide rapide indique:

Sommaire

Ce paramètre contrôle la manière dont les fichiers Swift d'un module sont reconstruits. * Incrémentiel : ne reconstruisez que les fichiers source Swift du module qui sont obsolètes, en exécutant plusieurs processus de compilation si nécessaire. * Module entier : reconstruisez toujours tous les fichiers source Swift dans le module, en un seul processus de compilation. Déclaration

Type de valeur SWIFT_COMPILATION_MODE

Énumération (chaîne)

Tommie C.
la source
4
Le temps de compilation est correct, en utilisant des points d'arrêt si le xcode téléporte quelque part près de l'horizon des événements d'un trou noir le plus proche.
nikans le
2
Même si la réponse ne résout pas le problème décrit dans la question, on constate que l'auteur a fait un effort. Cela ne devrait donc pas être une raison pour des votes négatifs massifs, n'est-ce pas?
Andrei Herford
Incremental est actuellement le paramètre recommandé dans les versions de débogage (voir la discussion sur WWDC developer.apple.com/videos/play/wwdc2018/408 ). Cela dépend peut-être d'une base de projet à projet, mais sur la nôtre, une construction propre était légèrement plus lente (5s) qu'une construction de module entier, mais environ 40% (30s) plus rapide pour les versions incrémentielles.
Mike Bryant
@nikans, le temps de compilation est encore trop lent en comparaison avec tout autre IDE et d'autres langages. Mais je dois admettre que le pire, c'est le débogueur.
firetrap
1

Veuillez essayer de décocher: Parallelize Build sur chaque cible dans Edit Scheme . Cela vous fera gagner du temps à construire si votre projet a de nombreuses cibles.

Modifier le schéma:

entrez la description de l'image ici

Thien Pham
la source
0

Avez-vous essayé d'exécuter Xcode en mode sans échec? Ce n'est pas l'idéal, mais c'était la seule façon de le faire fonctionner efficacement. C'est jusqu'à la récente mise à jour de Catalina où mon appareil n'est plus détecté en mode sans échec. Je suis donc de retour à la case départ maintenant.

Dino
la source
Il s'avère que c'était mon logiciel antivirus qui ralentissait les choses. Le désactiver a résolu le problème.
Dino du
@beefon Je crois que Dino faisait référence au mode sans échec de MacO. Vous pouvez en savoir plus ici: support.apple.com/en-us/HT201262
Bartosz Kunat
0

J'ai trouvé les mêmes problèmes dans deux cas différents:

1) l'application n'est pas lancée par Xcode, c'est-à-dire que le drapeau "Attendre le lancement de l'exécutable" est défini dans le panneau Info des paramètres de l'exécution du schéma;

2) l'option "Lancer en raison d'un événement de récupération en arrière-plan" est sélectionnée dans les paramètres du schéma (mais ce n'est pas la valeur par défaut)

Position de l'option Xcode

Xcode 11.2.1 (11B500)

Giorgio Daino
la source
0

Dans mon cas (XCode 11.x, MacOS 10.15.2), j'ai trouvé que la lenteur extrême du débogueur n'est déclenchée que si je fais un pas alors qu'une autre opération en une seule étape est en cours , c'est-à-dire que j'appuie trop rapidement sur le bouton de pas. Ma solution actuelle est d'éviter de faire cela.

Pure spéculation, mais peut-être est-ce déclenché par XCode / LLDB essayant de desservir plusieurs points d'arrêt simultanément? Essayez de supprimer tous les points d'arrêt sauf un et voyez si cela aide les choses.

Au cas où c'est pertinent: je travaille principalement avec du C ++ dans XCode, avec un peu d'Obj-C ici et là. Je n'utilise pas du tout Swift pour le moment.

Ruben Scratton
la source
0

Je fais face à cela depuis toujours et je l'ai finalement compris. C'était ces lignes dans mon fichier ~ / .lldbinit:

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

J'ai commenté ces lignes et maintenant c'est presque aussi rapide que sans le débogueur!

John Scalo
la source
-2

J'avais 238 points d'arrêt inutilisés. Lorsque je les ai supprimés, c'est à nouveau rapide (même avec les diagnostics activés.)

user2989332
la source