it-swarm.com.de

'Projektname' wurde mit Optimierung zusammengestellt - Stepping verhält sich möglicherweise merkwürdig; Variablen sind möglicherweise nicht verfügbar

Beim Versuch, in den AFNetworking-Code einzusteigen, wird folgende Warnung generiert:

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.

Und ich kann den Code natürlich nicht debuggen. Um genau zu sein, versuche ich, UIImageView+AFNetworking Kategorie zu debuggen, was unmöglich erscheint. Das Ändern des Codes hat keine Auswirkung (versucht, NSLog usw.). Wenn Sie versuchen, Compiler aufzurufen, gehen Sie zum Assembly-Code und zeigen UIImageView+TVASTAFNetworking als Kategorienamen an, der in der Codebasis nirgendwo vorhanden ist.

 enter image description here

Verwendung von Xcode 7. iOS 9 und 8. Cocoapods (kein Framework)

UPDATE Ich habe vergessen zu erwähnen, dass Optimizer sowohl für die Release- als auch für die Debug-Konfiguration auf none gesetzt ist. Ich verwende Debug config.

 enter image description here

UPDATE 2 

Strip Debug Symbols ist auch ausgeschaltet.

184
Mojtaba

Es ist lange her, aber ich habe das Problem endlich gelöst. Es gibt ein drittes Optimierungsflag LTO oder Link Time Optimization und überraschenderweise hat niemand Hier erwähnt, und aus irgendeinem Grund habe ich es auch nicht beachtet. Es ist genau dort oberhalb der Optimization Level-Einstellung, wie Sie in vielen hier gezeigten Screenshots sehen können.

Um es zusammenzufassen, gibt es 3 verschiedene Optimierungsflags, die Sie zum Debuggen deaktivieren möchten:

  • LLVM-Verbindungszeitoptimierung (-flto
  • LLVM-Optimierungsstufe (-O)
  • Schnelle Compiler-Optimierungsstufe 

 enter image description here

Weitere Informationen zu LTO: http://llvm.org/docs/LinkTimeOptimization.html

6
Mojtaba

Wenn Ihr Projekt Swift verwendet, gibt es in der Projekt-/Zielkonfiguration zwei separate Einstellungen für "Optimierungsebene". 

Stellen Sie sicher, dass Sie beide richtig eingestellt haben:

  1. Wählen Sie Ihr Projekt im Projektnavigatorfenster aus
  2. Wählen Sie unter "PROJECT" die Einstellungen für Ihr Projekt aus
  3. Klicken Sie auf die Registerkarte "Build-Einstellungen"
  4. Suchen Sie nach "Optimization Level" und Sie sehen zwei Einstellungen, eine für LLVM und eine für Swift.
  5. Stellen Sie die entsprechende Einstellung (None [-O0] für LLVM und None [-0none] für Swift) für die betreffende Build-Konfiguration ein.

 was compiled with optimization stepping may behave oddlyvariables may not be available

Dadurch wurde diese Warnung für mich gelöst.

143
Albert Bori

Anscheinend befindet sich Ihr Projekt im Freigabemodus. Im Release-Modus wird die App mit vielen Optimierungen kompiliert. Debugger hassen jedoch Optimierungen. Um die App zuverlässig zu debuggen, müssen Sie sie in den Debug-Modus schalten, der die Optimierung reduziert und eine Reihe von Debugging-Informationen hinzufügt. So wechseln Sie in den Debug-Modus:

  • Klicken Sie in der linken oberen Ecke von Xcode auf Ihr Schema.

Click on your scheme in the top-left corner of Xcode.

  • Wählen Sie "Schema bearbeiten ...".

Select "Edit Scheme..."

  • Klicken Sie auf das Dropdown-Menü "Build Configuration". und ändern Sie es in den Debug-Modus.

Click on the "Build Configuration" dropdown.

105
NobodyNada

Diese Warnung wird nur angezeigt, wenn Sie einen Haltepunkt erreichen und sich die Quelle in einem Projekt befindet, in dem die Optimierung aktiviert ist. Dadurch wird verhindert, dass Sie echte Variablenwerte beobachten (jedes Objekt wird als Null angezeigt, auch wenn dies nicht der Fall ist).

In meinem Fall passierte es nur beim schrittweisen Debuggen durch eine Abhängigkeit von Kokosapoden. 

Auch wenn Sie die Hauptziel- und Projekteinstellungen korrekt festgelegt haben (Debug-Symbol entfernen = AUS und Optimierungsstufe Keine), müssen Sie sicherstellen, dass es für das Pod-Projekt dasselbe ist, von dem aus Sie den Haltepunkt erreichen.

 enter image description here

48
Gomino

Es stellte sich heraus, dass nach dem Import eines alten Projekts (Xcode 7.x +) in den neuen Xcode 8.3 (8E162), wahrscheinlich aufgrund einer Compileroptimierung, der Swift Compiler - Optimierungsstufe standardmäßig auf Fast, Single gesetzt wurde -File-Optimierung:

 Before

Wenn Sie es in "none" ändern, wurde das Problem behoben:

 after

13
valvoline

Editor -> Validate Settings bestätigen Sie dann alle Änderungen. Dann solltest du bekommen Swift Compiler Optimisation Level in place

Setzen Sie Debug auf None

11
james sa

Dies war die Lösung für mich ...

Wenn Sie Kokosapods verwenden, fügen Sie wie in der Antwort von Gimino eine solche Zeile zur Pod-Datei hinzu:

xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

oder für Cocoapod-Versionen> = 1.0 (Danke Diejmon)

project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

Wo MyProject zusätzlich zu dem Standard 'Debug' Debug-local, Debug-Staging, Debug-PRODUCTION als Debug-Konfigurationen enthält

Standardmäßig generieren cocoapods normalerweise Pod-Konfigurationen als Release. In dieser Podfile-Zeile können Sie erkennen, dass sie Debuggen sind.

7
wils

Ich bin heute auf die gleiche Ausgabe gestoßen und habe es (zumindest in meinem Fall) herausgefunden ... Ich benutze auch CocoaPods, und ich hatte dieses Problem beim Ausführen meines Testziels (Swift gemischt mit ObjC).

Ich verwende Xcode 7.2 mit iOS 9.2 SDK.

In der Abbildung unten sehen Sie die Optimierungen für das Ziel und das Projekt vor meiner Änderung:

 optimization level before change

Das Überraschende dabei ist, dass der Compiler die Optimierung des Ziels beendet hat, obwohl die aufgelöste Optimierung None [-O0] war. Erst nachdem die Projekteinstellung von -Os in -O0 geändert wurde.

Unten sehen Sie meine endgültigen Einstellungen:

 optimization level after change

7
André Neves

Sind Sie sicher, dass Ihre Debug-Konfiguration den Code nicht optimiert (sollte es nicht sein)? Es sieht so aus, als hätten Sie versehentlich Optimierungen für die Debug-Konfiguration aktiviert und sollten diese Einstellung in den Zieleinstellungen deaktivieren.

1
Can Poyrazoğlu

Nur für den Fall, dass beim Debuggen eines Pods, der intern eine C-Bibliothek verwendet, dieses Problem auftritt, müssen Sie in den Projekteinstellungen zusätzlich zu allen anderen im Thread aufgelisteten Funktionen eine weitere Änderung vornehmen.

Gehen Sie zu den Pods-Projekteinstellungen -> Ihr C-using-Ziel -> Build-Einstellungen -> Apple Clang - Benutzerdefinierte Compiler-Flags -> Andere C-Flags und entfernen Sie das -O3-Flag, das dort irgendwie angekommen ist.

0
Dmitry Serov

Dies kann eine zu starke Vereinfachung sein, aber sind Sie für Release oder mit Optimierung (die Symbole aus Swift oder LLVM entfernen) zu hoch? Wenn dies der Fall ist, ändern Sie Ihr Schema und wechseln Sie zu Debuggen oder ändern Sie Ihre Build-Einstellungen für die Swift- oder LLVM-Optimierung auf Keine (0).

0
Aaron

Dieser Fehler ist mir zweimal passiert und in jedem Fall war ein Fehler in dem URL-Parameter, mit dem ein Dienst angefordert wurde. In einem Fall hatte die URL etwas Platz im Port-Abschnitt, im anderen Fall wurde ein optionaler Wert nicht entpackt. 

Der Fix war also, um sicherzugehen, dass die URL für die Anfrage gut geformt ist. Weitere Informationen zu meinem Fall und ähnliches Melden der gleichen hier

0
le0diaz

Alles was ich getan habe ist, mein Projekt zu säubern (Product > Clean) und es erneut auszuführen

0
raed