Xcode affiche une erreur lors de la tentative d'impression d'un objet avec po <objectName>
, mais uniquement pour un projet.
erreur: impossible de matérialiser la structure: la taille de la variable <varName> n'est pas d'accord avec la taille de ValueObject Erreur dans Execute, impossible de PrepareToExecuteJITExpression
Le débogueur Xcode affiche également TOUS les objets comme nil
( self
exclus), lorsqu'ils ne le sont pas ( NSLog
affiche la sortie correcte, comme indiqué 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.)
ios
objective-c
xcode
debugging
Binaire
la source
la source
NSString
s a créé une ligne au-dessus du point d'arrêt!Réponses:
Etes-vous sûr de ne pas être en "mode Release"?
Si vous voulez voir les valeurs des 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 de démarrage / arrêt, puis "Modifier le schéma ...", puis "Exécuter" les paramètres, puis " Onglet Info ", puis" Build Configuration ". Ici, définissez" Debug ". Si c'était sur" Release "c'est le problème que vous avez vu tous les nils).
la source
debug configuration
?Build Settings
, la propriété de déploiement aStrip debug symbols during copy
été définie sur YES.Strip debug symbols during copy
àNO
etOptimization Level
àNone -O0
dans le projetBuild Settings
J'ai défini le "Niveau d'optimisation" pour la configuration de débogage sur "Aucun" et cela a résolu le problème.
la source
Fastest, Smallest[-Os]
et cela a fonctionné.Assurez-vous que Address Sanitizer est désactivé dans les paramètres de votre programme. Address Sanitizer ne fonctionne pas correctement avec le débogueur.
la source
Il semble que chacun a sa propre solution.
Pour moi, j'utilise
Objective-C
etSwift
en même temps.Tout d'abord, allez à
TARGETS -> Build Settings
et recherchez lecode generation
Vous trouverez
Apple LLVM 6.0
etSwift Compiler
Changer leur
Optimization Level
tout enNone
, puis Debug, vous pouvez trouver la valeur nonnil
Étonnamment, une fois que vous pouvez voir la valeur, vous résolvez ce problème de manière permanente, puis vous pouvez changer la valeur
Optimization Level
qu'il était auparavant.la source
Cela peut se produire d’autres façons. Pour moi, c'était parce que la valeur «Other C Flags» était définie sur «-O2», même pour la version de débogage. La désactivation de cette option pour la version de débogage a résolu le problème.
la source
Pour moi, Xcode filtrait la sortie du débogueur. Assurez-vous que votre paramètre de sortie est Sortie du débogueur ou Toutes les sorties
la source
Je viens de rencontrer ce problème et j'ai constaté que c'était parce que
Deployment Postprocessing = YES
dans les paramètres de construction.Changer cela pour le
NO
corriger, comme le montre la capture d'écran ci-dessous:Version Xcode: 6.0.1 (6A317) sur OSX 10.9.5
la source
Je viens de rencontrer un problème similaire: à un moment donné, le débogueur Xcode a soudainement imprimé certains types d'objets, en particulier NSStrings, comme (null) bien qu'ils aient été initialisés avec une valeur. Imprimé via
la valeur correcte de l'objet a été affichée.
Déroutant! Résoudre le problème était assez simple: j'ai juste arrêté Xcode et redémarré mon ordinateur. Après avoir redémarré Xcode, tout fonctionne à nouveau bien :).
la source
Assurez-vous que
Link-Time Optimization = No
pour le mode débogage dans les paramètres de construction.la source
C'est tout ce qu'il a fallu pour moi.
la source
Les solutions ici corrigent également le bogue que vous voyez
error: <EXPR>:1:1: error: use of unresolved identifier
chaque fois que vous essayezpo
une variable.Pour moi, la solution était d'aller
Build Settings
chercherOptimization Level
et de s'assurer que chaqueDebug
paramètre était défini surNone
.la source
Accédez à "Autres indicateurs C" dans le paramètre de construction et définissez la valeur de débogage de -o2 à -O0
la source
J'ai également rencontré cela et quand j'ai découvert que j'étais en mode de libération, je passe 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 release 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 en développement, cela a fonctionné pour moi.
la source
La réalité est que le système devrait fonctionner hors de la boîte et n'est pas dû à des liens vers une quantité multiple de paramètres différents, à un point tel que les choses peuvent fonctionner pour vous, ou non.
Pourquoi le système ne permet-il pas toujours de déboguer en mode débogage est un mystère auquel seul Apple peut répondre (s'ils s'en soucient, ce que je doute dernièrement).
Après tout, la différence entre debug / non-debug serait des tables supplémentaires avec des métadonnées qui ne remplissent que l'espace mémoire / disque.
Si vous compilez directement avec le simulateur ou un appareil, vous ne vous soucierez pas de ces mégaoctets supplémentaires.
Nous devons donc lancer des boucles supplémentaires pour faire une chose très basique et simple que toutes les idées que je connais depuis le siècle dernier font très bien.
Et pour ajouter, pour moi, ce qui a fonctionné était de changer sur "Debug" l'optimisation Link-Time de "Monolithic" à "No" (xcode 8).
la source