Xcode affiche une erreur lors de la tentative d'impression d'un objet avec po <objectName>
, mais seulement pour un projet.
erreur: impossible de matérialiser struct: la taille de la variable <nomVari> est en désaccord avec la taille de ValueObject Errored out in Execute, impossible de PrepareToExecuteJITExpression
Le débogueur Xcode affiche également TOUS les objets sous la forme nil
(self
exclus), lorsqu'ils ne le sont pas (NSLog
affiche une sortie correcte, comme dans l'image). Je ne sais pas ce qui ne va pas avec le projet. Tous les autres projets fonctionnent bien.
Avez-vous des idées de ce que ça pourrait être? (Le nettoyage du projet n'a eu aucun effet.)
Êtes-vous sûr de ne pas être en "mode de libération"?
Si vous voulez voir les valeurs de variables, vous devez être en "mode débogage" (cliquez sur le nom de votre projet dans le coin supérieur gauche près des boutons Démarrer/Arrêter, puis "Modifier le schéma ...", puis "Paramètres", puis "Paramètres". Info ", puis" Build Configuration ". Ici, définissez" Debug ". S'il était sur" Release ", c'est le problème que vous avez vu tout nil).
J'ai défini "Niveau d'optimisation" pour la configuration de débogage sur "Aucun" et le problème a été résolu.
Assurez-vous que Address Sanitizer est désactivé dans les paramètres de votre schéma. Le désinfectant d'adresses ne fonctionne pas bien avec le débogueur.
Il semble que tout le monde a sa propre solution.
Pour moi, j'utilise Objective-C
et Swift
en même temps.
Tout d’abord, allez à TARGETS -> Build Settings
et cherchez le code generation
Tu trouveras Apple LLVM 6.0
et Swift Compiler
Changer leur Optimization Level
all à None
, puis à déboguer, vous pouvez trouver la valeur non nil
Étonnamment une fois que vous pouvez voir la valeur, vous résolvez ce problème de façon permanente, alors vous pouvez changer le Optimization Level
à cela l'habitude d'être.
Cela peut se produire d’autres manières. Pour moi, c'était parce que la valeur "Other C Flags" était définie sur "-O2", même pour la version de débogage. Désactiver cette option pour la génération de débogage a résolu le problème.
Je viens de rencontrer ce problème et de constater que c’est parce que Deployment Postprocessing = YES
dans les paramètres de construction.
Changer ceci en NO
le corrige, comme le montre la capture d'écran ci-dessous:
Version Xcode: 6.0.1 (6A317) sur OSX 10.9.5
Je viens de rencontrer un problème similaire: à un moment donné, le débogueur Xcode a imprimé certains types d’objets, notamment NSStrings en tant que (null) bien qu’ils aient été initialisés avec une valeur. Imprimé via
NSLog(@"String value: %@", myString);
la valeur correcte pour l'objet a été affichée.
Déroutant! Résoudre le problème était plutôt facile: je viens d’arrêter Xcode et de redémarrer mon ordinateur. Après avoir redémarré Xcode, tout fonctionne à nouveau correctement :).
Assure-toi Link-Time Optimization = No
pour le mode débogage dans les paramètres de construction.
C'est tout ce qu'il a fallu pour moi.
Les solutions ici résoudront également le bogue où vous voyez error: <EXPR>:1:1: error: use of unresolved identifier
à chaque fois que vous essayez de po
une variable.
Pour moi, la solution était d'aller à Build Settings
et rechercher Optimization Level
et assurez-vous que chaque paramètre Debug
a été défini sur None
.
Accédez à "Autres indicateurs C" dans le paramètre de construction et définissez la valeur de débogage de -o2 à -O0.
Je me suis heurté à cela aussi et quand j'ai découvert que j'étais en mode de publication, je suis passé au débogage ... pas de solution. Il s'avère que je devais d'abord faire un nettoyage (cmd + shift + k).
Donc, je pense que ce qui se passe, c'est qu'après le mode de publication intégré, tout n'est pas recompilé dans develop et donc lldb ne peut pas lire correctement les symboles. Après le nettoyage et la recompilation, cela a fonctionné pour moi.