Essayer d'entrer dans le code AFNetworking génère l'avertissement suivant:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
Et bien sûr, je ne suis pas en mesure de déboguer le code. Pour être précis, j'essaie de déboguer une UIImageView+AFNetworking
catégorie qui semble impossible. La modification du code n'a aucun effet (essayé NSLog
, etc.) et lorsque vous essayez d'intervenir dans les compilateurs, vous accédez au code d'assembly et s'affiche UIImageView+TVASTAFNetworking
comme un nom de catégorie qui n'existe nulle part dans la base de code.
Utilisation de Xcode 7. iOS 9 et 8. Cocoapods (pas de framework)
MISE À JOUR
J'ai oublié de mentionner qu'Optimizer est configuré pour la configuration de none
libération et de débogage et j'utilise en fait Debug
config.
MISE À JOUR 2
Strip Debug Symbols
Est également éteint.
la source
Strip Debug Symbols
est désactivé.Réponses:
Si votre projet utilise Swift, il existe deux paramètres distincts "Niveau d'optimisation" dans la configuration du projet / cible.
Assurez-vous de les définir correctement:
None [-O0]
pour LLVM etNone [-0none]
pour Swift) pour la configuration de construction en question.Faire cela a résolu cet avertissement pour moi.
la source
po
,p
,expr
...?Il semble que votre projet soit en mode Release. Le mode Release compile l'application avec de nombreuses optimisations, mais les débogueurs détestent les optimisations, donc pour déboguer l'application de manière fiable, vous devez la mettre en mode Debug, ce qui réduit l'optimisation et ajoute un tas d'informations de débogage. Pour le basculer en mode débogage:
la source
Cet avertissement n'apparaît que lorsque vous atteignez un point d'arrêt et que la source se trouve dans un projet où l'optimisation est activée, vous empêchant de regarder les valeurs réelles des variables (chaque objet est affiché comme nul, même s'il ne l'est pas)
Dans mon cas, cela ne s'est produit que lors du débogage étape par étape via une dépendance cocoapod.
Ainsi, même si vos paramètres de cible et de projet principaux sont correctement définis (Strip Debug Symbol = OFF et Optimization level None), vous devez vous assurer qu'il en est de même pour le projet Pod à partir duquel vous atteignez le point d'arrêt.
la source
None [-O0]
)pod install
recommencerez. Changez-le comme ça .Il s'avère qu'après l'importation d'un ancien projet (Xcode 7.x +) vers le nouveau Xcode 8.3 (8E162), probablement en raison de l'optimisation du compilateur, Swift Compiler - Optimization Level a été défini par défaut sur Fast, Single-File Optimization :
Le changer en aucun, a résolu le problème:
la source
Editor
->Validate Settings
puis confirmez toutes les modifications. Ensuite, vous devriezDéfinissez Debug sur
None
.la source
C'était la solution pour moi ...
Dans le sens de la réponse de Gimino, si vous utilisez des cocoapodes, ajoutez une ligne comme celle-ci au Podfile:
ou pour les versions cocoapods> = 1.0 (merci Diejmon)
Où MyProject a 'Debug - local', 'Debug - staging', 'Debug - PRODUCTION' comme configurations de débogage en plus du 'Debug' standard
Par défaut, les cocoapods génèrent généralement des configurations de pod en version Release, cette ligne Podfile vous permet de leur dire qu'ils sont en débogage.
la source
J'ai rencontré le même problème aujourd'hui et je l'ai compris (au moins dans mon cas). J'utilise également CocoaPods, et j'avais ce problème lors de l'exécution de ma cible de test (Swift mélangé avec ObjC).
J'utilise Xcode 7.2, avec le SDK iOS 9.2.
Dans l'image ci-dessous, vous pouvez voir les optimisations pour la cible et le projet avant ma modification:
La chose surprenante est que même si l'optimisation résolue est Aucune [-O0] , seulement après avoir changé le paramètre du projet de -Os à -O0 que le compilateur a cessé d'optimiser la cible.
Ci-dessous, vous pouvez voir mes paramètres finaux:
la source
Cela fait longtemps, mais j'ai finalement résolu le problème. Il y a un troisième indicateur d'optimisation
LTO
ou,Link Time Optimization
et étonnamment, personne ne l'a mentionné ici et pour une raison quelconque, je n'y ai pas fait attention non plus. C'est juste au-dessus duOptimization Level
paramètre, comme vous pouvez le voir dans de nombreuses captures d'écran publiées ici.Donc, pour résumer, il y a 3 indicateurs d'optimisation différents que vous souhaitez désactiver pour le débogage:
-flto
)-O
)Plus d'informations sur LTO: http://llvm.org/docs/LinkTimeOptimization.html
la source
Si vous devez désactiver les optimisations pour vos modules Swift afin de pouvoir les déboguer, ajoutez ce qui suit à votre
Podfile
. Cela désactivera les optimisations pour les versions de débogage uniquement.la source
Êtes-vous sûr que votre configuration de débogage n'optimise pas le code (elle ne devrait pas)? Il semble que vous ayez accidentellement activé les optimisations pour la configuration de débogage et vous devez le désactiver à partir des paramètres de la cible.
la source
Cette erreur m'est arrivée deux fois, et dans tous les cas, c'était une erreur dans le paramètre URL utilisé pour demander un service. Dans un cas, l'URL avait de l'espace dans la section du port, dans l'autre cas, une valeur facultative n'était pas déballée.
Le correctif consistait donc à s'assurer que l'URL de la demande était bien formée. Plus d'informations sur mon cas, et des rapports similaires identiques ici .
la source
Tout ce que j'ai fait, c'est nettoyer (
Product > Clean
) mon projet et le relancerla source
Cela peut être une simplification excessive, mais construisez-vous pour la version ou avec une optimisation (qui supprime les symboles de Swift ou LLVM) trop élevée? Si tel est le cas, modifiez votre schéma et passez à Debug, ou modifiez vos paramètres de génération pour l'optimisation rapide ou LLVM sur Aucun (0).
la source
Juste au cas où quelqu'un serait confronté à ce problème lors du débogage d'un pod qui utilise une bibliothèque C en interne, il y a une autre chose que vous devez modifier dans les paramètres du projet pour le faire fonctionner en plus de tout le reste répertorié dans le thread.
Accédez aux paramètres du projet Pods -> Votre cible C-using -> Paramètres de construction -> Apple Clang - Indicateurs de compilateur personnalisés -> Autres
-O3
indicateurs C et supprimez l' indicateur qui y est arrivé d'une manière ou d'une autre.la source