2016-06-14 7 views
12

Ich habe ein Projekt von der vorherigen Version von Xcode zu Xcode 8 migriert. Ich möchte den neuen Visual Memory Debugger verwenden. Es ist in neuen Projekten verfügbar, fehlt aber in meinem importierten vollständig. Warum ist das?Wie aktiviert man Visual Memory Debugger in Xcode 8?

+0

Ich denke, Sie sollten Ihr Projekt auf die von Xcode 8 empfohlenen Einstellungen aktualisieren. –

+0

Sehen Sie gelbe Dreiecke (Warnungen), in denen Sie nach Updates gefragt werden? –

+0

Ich habe gerade auf diese geklickt, aber das Problem bleibt bestehen. – PopKernel

Antwort

12

Es scheint, dass Swift 3 für Visual Memory Debugger erforderlich ist, zu arbeiten.

Meine App, die auf Swift 2.3 migriert wurde, funktionierte nicht, als ich versuchte, sie auf Swift 3.0 zu migrieren, funktionierte das sofort.

Das Kontrollkästchen für die Laufzeitbereinigung ist nicht erforderlich, damit der visuelle Speicher-Debugger funktioniert. Der Grund für die Deaktivierung ist jedoch derselbe.

+5

Bestätigt in den [Xcode 8.0 Beta Release Notes] (http://adcdownload.apple.com/WWDC_2016/Xcode_8_beta/Release_Notes_for_Xcode_8_beta.pdf): "Bitte beachten Sie, dass einige neue Features in Xcode 8 nicht für Projekte unterstützt, die Swift 2.3 verwenden Dazu gehören:. • Speicher graph Debuggen • Adresse Sanitizer • Gewinde Sanitizer • Core Data bauen Zeitcodegenerierung um in der Lage sein, diese Funktionen nutzen zu können, muss deinen Swift-Code zu Swift 3 migrieren. (26003920) " – zpasternack

+0

Mein Projekt mit swift 2.3 scheint zu funktionieren. – Brynjar

0

Ich habe gerade ein Objective-C iOS 7-Projekt mit Xcode 7 in Xcode 8 ausgeführt (ohne zu migrieren) und das Visual Memory Debugger-Symbol erscheint am unteren Rand von Xcode im Debugging-Bereich neben der Debug View-Hierarchie-Schaltfläche.

Visual memory Debugger

Es ist die Schaltfläche mit den drei Kreisen.

Aus den anderen Kommentaren sieht es aus, als ob Swift 3 für die Verwendung dieser Funktion erforderlich sein könnte.

+0

Es ist nicht da. Vielleicht hat es etwas damit zu tun, dass mein Projekt eine Mac-App ist? – PopKernel

+0

Hmm, vielleicht. Auf welche Version von OS X haben Sie zuvor ausgerichtet und welche Version von Xcode wurde mit dem Projekt erstellt? – JAL

+1

warten, was ist mit "Runtime Sanitation"? Es ist im Schema neuer Projekte eingeschaltet, aber nicht in meinem. Es ist ausgegraut und sagt "erfordert Neukompilierung" – PopKernel

7

Es scheint, als ob das Projekt Swift 3 benötigt, um die Adresse & Thread Sanitizer zu aktivieren (was der Memory Debugger ist).

address sanitizer thread sanitizer

Für mich gilt dies für beide iOS & OS X/macOS apps. Beide wurden in Swift 2.2 & konvertiert in 2.3.

Hinweis: Ich habe dies nur auf OS X El Capitan 10.11.5 getestet.

@gabriellanata bestätigt, dass es funktioniert, wenn der Code Swift umgewandelt 3.

+1

Speicher Debugger ist nicht kompatibel mit dem Thread Sanitizer. Sie können nicht beide gleichzeitig ausführen. – tzm41

+0

gut zu wissen, dass es nur für Swift 3 verfügbar ist ... –

0
Argument '-sanitize=address' is not supported on the Swift 2.3 toolchain. 
You will need to migrate your project to Swift 3 to use this feature. 

Xcode 8 GM bauen Fehler

P.S. Objective-c wird von Visual Memory Debugger unterstützt

0

Wenn Sie auf Speicher klicken, wird im Quelltext-Editorfenster einige Speicherinformationen angezeigt, einschließlich der Gründe für ihre Deaktivierung. In meinem Fall war es, weil ich Zombie-Objekte im Scheme aktiviert hatte. (Xcode 8.3.2)