Xcode 11-Debugger ist extrem langsam - Ein bekanntes Problem?

91

Seit ich auf die neueste Xcode-Version 11.0 (11A420a) aktualisiert habe, ist das Debuggen extrem langsam und umständlich.

BEARBEITEN: Nach dem Update auf 11.1 GM (11A1027) ist das Problem immer noch dasselbe.

Das Kompilieren und Ausführen eines Projekts im Simulator oder auf einem Gerät ist kein Problem. Beim Erreichen eines Haltepunkts wird Xcode jedoch mehr oder weniger unbrauchbar:

  • Die Programmausführung stoppt sofort, wenn der Haltepunkt erreicht ist. Xcode benötigt jedoch bis zu 30 Sekunden, um die Position im Codefenster anzuzeigen, und eine weitere Minute, um den Inhalt der Variablenansicht zu laden (die die Werte und Zustände der am Haltepunkt verfügbaren Variablen anzeigt).
  • Wenn ich die Funktionen " Schritt in" oder " Schritt über" verwende , dauert es bis zu einer Minute, um den nächsten Schritt auszuführen, und erneut eine weitere Minute, um die Variablen zu laden.

Ich verwende Xcode auf einem Mac mini 2018 mit einem 3,2-GHz-i7- und 32-GB-RAM. Ich habe Xcode 10 zuvor ohne Probleme auf demselben Computer verwendet.


Die Suche nach "Xcode langsam" bringt natürlich eine Menge Threads und mögliche Lösungen hervor. Aus meinen Jahren als iOS-Entwickler weiß ich, dass Xcode nie das schnellste und stabilste Programm war. Es war jedoch nie so schlimm wie jetzt.

Leider hatte keiner der bekannten Tricks (Neustart von Xcode oder Mac, Bereinigen des Projekts, Bereinigen der Ordner der Xcode-Bibliothek usw.) Auswirkungen.

Die große Frage ist also:

Ist dies ein bekanntes Problem in Xcode 11? Gibt es bekannte Lösungen?

Andrei Herford
quelle
Für den Anfang ist die neueste stabile Version von Xcode 11A1027, nicht 11A420a. Ich würde damit beginnen, es zu aktualisieren.
Rafael Francisco
2
Mmh, 11A420a ist die neueste Version im App Store erhältlich
Andrei Herford
2
Ich habe jetzt auf 11A420a aktualisiert und das Problem ist immer noch das gleiche.
Andrei Herford
2
Ich habe versucht, 11.1 (11A1027) - gleiche
Nikans
3
Sie können einen Fehlerbericht bei Apple einreichen. Das mache ich normalerweise. Sie antworten schließlich. In der Regel werden Systeminformationen abgefragt, und Sie müssen einige Diagnosen durchführen. Im Allgemeinen ist Xcode langsam und ich bin nicht sicher, ob Apple weiß, wie man es behebt. Ich laufe auf einem 10-Kern-iMac Pro und Xcode ist immer noch hundeschwach.
Mobile Ben

Antworten:

24

Nun, ich hatte das gleiche Problem und habe kürzlich herausgefunden, dass ich nur vergessen habe, die Diagnose für mein Schema zu deaktivieren

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie Ihre Laufkonfigurationen -> Schemata verwalten -> Schema bearbeiten -> Ausführen -> Registerkarte Diagnose

Gennadiy Ryabkin
quelle
6
Danke für die Antwort. Aufgrund der positiven Stimmen gehe ich davon aus, dass dies das Problem für einige Benutzer gelöst hat. In meinem Fall machte es jedoch keinen Unterschied. Obwohl dies in einigen Fällen hilfreich sein kann, ist es leider keine allgemeine Lösung
Andrei Herford
Andrei Könnten Sie einige quantitative Kennzahlen angeben, was "langsamer geworden" bedeutet? Wissen Sie, dass Builds von gemischtsprachigen Projekten von Swift und Objective-C im Allgemeinen langsamer sind?
Gennadiy Ryabkin
2
Nun, ich denke, es ist alles in Frage ... Erstens hat dies nichts mit der Bauzeit zu tun. Wie bereits geschrieben: "Das Kompilieren und Ausführen eines Projekts im Simulator oder auf einem Gerät ist kein Problem. Beim Erreichen eines Haltepunkts wird Xcode jedoch mehr oder weniger unbrauchbar"
Andrei Herford,
Cooler Andrei, aber meine Antwort zum Debugger. Auf der Diagnoseseite werden die Einstellungen des Debuggers angezeigt. Und es gibt nichts über die Bauzeit. Insbesondere der Teil über Speicherverwaltung und Zuweisungen. Überprüfen Sie einfach den Namen Ihres Schemas und Ihrer Konfiguration.
Gennadiy Ryabkin
Andrei, ich glaube nicht, dass Sie eine benutzerdefinierte LLDB auf Ihrem Xcode 11 installiert haben, die das neueste OS-X impliziert. Es ist etwas Spezifisches für Ihre Umgebung. Ich würde empfehlen, alle Schemaeinstellungen noch einmal zu überprüfen.
Gennadiy Ryabkin
1

Ich habe einige Leistungsverbesserungen bei der Verwendung des Verhaltens "Ganzes versus inkrementelles Kompilieren" festgestellt. Darüber hinaus sollten beim Ausführen von Mojave und Catalina Leistungsprobleme auftreten. Insbesondere da die Canvas-Vorschau und andere neue Funktionen mehr CPU-Intensität erfordern als die letzte Version von Xcode, würde ich erwarten, dass die Mojave-Leistung bei Verwendung von Xcode 11 geringer ist (da diese nicht für diese Version des Betriebssystems optimiert ist). Da Catalina in der Beta ist, würde ich weitere Probleme erwarten. Ich habe keine anderen spezifischen Maßnahmen als den Sehtest ergriffen. Der erste Lauf von Whole Compilation ist langsam, scheint danach jedoch besser zu werden.

Schnelle Hilfe besagt:

Zusammenfassung

Diese Einstellung steuert die Art und Weise, wie die Swift-Dateien in einem Modul neu erstellt werden. * Inkrementell : Erstellen Sie nur die veralteten Swift-Quelldateien im Modul neu und führen Sie nach Bedarf mehrere Compilerprozesse aus. * Gesamtes Modul : Erstellen Sie immer alle Swift-Quelldateien im Modul in einem einzigen Compilerprozess neu. Erklärung

SWIFT_COMPILATION_MODE Werttyp

Aufzählung (String)

Tommie C.
quelle
3
Die Kompilierungszeit ist in Ordnung, da Haltepunkte verwendet werden, obwohl xcode irgendwo in der Nähe des Ereignishorizonts eines nächsten Schwarzen Lochs teleportiert wird.
Nikans
2
Auch wenn die Antwort das in der Frage beschriebene Problem nicht löst, stellt man fest, dass der Autor sich bemüht hat. Das sollte also kein Grund für massive Abstimmungen sein, oder?
Andrei Herford
Inkrementell ist derzeit die empfohlene Einstellung in Debug-Builds (siehe WWDC talk developer.apple.com/videos/play/wwdc2018/408 ). Vielleicht hängt dies von Projekt zu Projekt ab, aber bei uns war ein sauberer Build etwas langsamer (5 Sekunden) als ein ganzer Modul-Build, aber bei inkrementellen Builds etwa 40% (30 Sekunden) schneller.
Mike Bryant
@nikans die Kompilierungszeit ist immer noch zu langsam im Vergleich zu anderen IDE und anderen Sprachen. Aber ich muss zugeben, das Schlimmste ist der Debugger.
Feuerfalle
0

Haben Sie versucht, Xcode im abgesicherten Modus auszuführen? Es ist nicht ideal, aber nur so konnte ich es effizient laufen lassen. Dies ist bis zum letzten Catalina-Update der Fall, bei dem mein Gerät im abgesicherten Modus nicht mehr erkannt wird. Also bin ich jetzt wieder auf dem ersten Platz.

Dino
quelle
Es stellte sich heraus, dass meine Antivirensoftware die Dinge verlangsamte. Durch Deaktivieren wurde das Problem behoben.
Dino
@beefon Ich glaube, dass Dino sich auf den abgesicherten Modus von MacO bezog. Sie können hier mehr darüber lesen: support.apple.com/en-us/HT201262
Bartosz Kunat
0

Ich habe die gleichen Probleme in zwei verschiedenen Fällen gefunden:

1) Die App wird nicht von Xcode gestartet, dh das Flag "Warten auf den Start der ausführbaren Datei" wird im Infofenster der Scheme Run-Einstellungen gesetzt.

2) In den Schemaeinstellungen ist die Option "Aufgrund eines Hintergrundabrufereignisses starten" ausgewählt (dies ist jedoch nicht die Standardeinstellung).

Position der Xcode-Option

Xcode 11.2.1 (11B500)

Giorgio Daino
quelle
0

In meinem Fall (XCode 11.x, MacOS 10.15.2) habe ich festgestellt, dass die extreme Langsamkeit des Debuggers nur ausgelöst wird, wenn ich einen Schritt mache, während ein weiterer Einzelschritt ausgeführt wird , dh ich drücke die Schritttaste zu schnell. Meine derzeitige Problemumgehung besteht darin, dies zu vermeiden.

Reine Spekulation, aber vielleicht wird sie von XCode / LLDB ausgelöst, der versucht, mehrere Haltepunkte gleichzeitig zu bedienen? Versuchen Sie, alle Haltepunkte bis auf einen zu entfernen, und prüfen Sie, ob dies hilfreich ist.

Falls es relevant ist: Ich arbeite hauptsächlich mit C ++ in XCode, mit ein wenig Obj-C hier und da. Ich benutze Swift derzeit überhaupt nicht.

Reuben Scratton
quelle
0

Deaktivieren Sie bitte: Build auf jedem Ziel im Bearbeitungsschema parallelisieren . Das Erstellen spart Zeit, wenn Ihr Projekt viele Ziele hat.

Bearbeitungsschema:

Geben Sie hier die Bildbeschreibung ein

Thien Pham
quelle
0

Ich habe mich schon immer damit beschäftigt und es endlich herausgefunden. Es waren diese Zeilen in meiner ~ / .lldbinit-Datei:

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

Ich habe diese Zeilen auskommentiert und jetzt ist es fast so schnell wie ohne den Debugger!

John Scalo
quelle