Xcode muestra un error al intentar imprimir un objeto con po <objectName>
, pero solo para un proyecto.
error: no se pudo materializar struct: el tamaño de la variable <varName> no está de acuerdo con el tamaño del ValueObject Errado en Execute, no se pudo PrepararExecuteJITExpression
El depurador Xcode también muestra TODOS los objetos como nil
( self
excluidos), cuando no lo están ( NSLog
muestra la salida correcta, como se ve en la imagen). No sé qué tiene de malo el proyecto. Todos los demás proyectos funcionan bien.
¿Alguna idea de que podría ser? (La limpieza del proyecto no tuvo ningún efecto).
ios
objective-c
xcode
debugging
Binario
fuente
fuente
NSString
creó una línea por encima del punto de interrupción!Respuestas:
¿Estás seguro de que no estás en "Modo de lanzamiento"?
Si desea ver valores variables, debe estar en "Modo de depuración" (haga clic en el nombre de su proyecto en la esquina superior izquierda cerca de los botones de inicio / detención, luego "Editar esquema ...", luego "Ejecutar", luego " Pestaña "Información", luego "Configuración de compilación". Aquí establezca "Depurar". Si estaba en "Liberar", ese es el asunto que vio todos nulos).
fuente
debug configuration
?Build Settings
, la propiedad de implementaciónStrip debug symbols during copy
se estableció en SÍ.Strip debug symbols during copy
aNO
y de laOptimization Level
queNone -O0
en el proyectoBuild Settings
Establecí el "Nivel de optimización" para la configuración de depuración en "Ninguno" y resolvió el problema.
fuente
Fastest, Smallest[-Os]
y funcionó.Asegúrese de que Address Sanitizer esté desactivado en la configuración de Scheme. Address Sanitizer no funciona bien con el depurador.
fuente
Parece que todos tienen su propia solución.
Para mí, uso
Objective-C
ySwift
al mismo tiempo.En primer lugar, vaya
TARGETS -> Build Settings
y busque elcode generation
Encontrarás
Apple LLVM 6.0
ySwift Compiler
Cambie
Optimization Level
todo aNone
, luego Depuración, puede encontrar el valor nonil
Sorprendentemente, una vez que puede ver el valor, resuelve este problema permanentemente, luego puede cambiar el valor
Optimization Level
que solía ser.fuente
Hay otras formas en que esto puede ocurrir. Para mí fue porque el valor "Otros C Flags" se estableció en "-O2", incluso para la compilación de depuración. Desactivar esto para la compilación de depuración resolvió el problema.
fuente
Para mí, Xcode estaba filtrando la salida del depurador. Asegúrese de que su configuración de salida sea Salida del depurador o Toda la salida
fuente
Acabo de encontrar este problema y descubrí que era porque
Deployment Postprocessing = YES
en la Configuración de compilación.Cambiando esto para
NO
arreglarlo, como se ve en la siguiente captura de pantalla:Versión de Xcode: 6.0.1 (6A317) en OSX 10.9.5
fuente
Acabo de encontrarme con un problema similar: en un momento, el depurador de Xcode imprimió algunos tipos de objetos, especialmente NSStrings, como (nulo) aunque se inicializaron con un valor. Impreso a través de
Se mostró el valor correcto para el objeto.
¡Confuso! Resolver el problema fue bastante fácil: simplemente apagué Xcode y reinicié mi computadora. Después de reiniciar Xcode, todo vuelve a funcionar bien :).
fuente
Asegúrese
Link-Time Optimization = No
del modo de depuración en la Configuración de compilación.fuente
Eso es todo lo que me costó.
fuente
Las soluciones aquí también solucionarán el error donde ves
error: <EXPR>:1:1: error: use of unresolved identifier
cada vez que intentas conpo
una variable.Para mí, la solución era ir a
Build Settings
buscarOptimization Level
y asegurarme de que cadaDebug
configuración estaba configurada enNone
.fuente
Vaya a "Otros C Flags" en la configuración de compilación y establezca el valor de depuración de -o2 a -O0
fuente
También me he encontrado con esto y cuando descubrí que estaba en modo de liberación, cambié a depurar ... no hay solución. Resulta que primero tuve que hacer una limpieza (cmd + shift + k).
Entonces, creo que lo que sucede es que después del modo de lanzamiento integrado, no todo se vuelve a compilar en desarrollo y, por lo tanto, lldb no puede leer los símbolos correctamente. Después de limpiar y recompilar en desarrollo funcionó para mí.
fuente
La realidad es que el sistema debería funcionar de inmediato y no se debe a enlaces a una cantidad múltiple de configuraciones diferentes, hasta el punto de que las cosas pueden funcionar para usted o no.
¿Por qué el sistema no siempre permite la depuración cuando está en modo de depuración? Es un misterio que solo Apple puede responder (si les importa, lo que tarde dudo que lo hagan).
Después de todo, la diferencia entre depurar / no depurar serían tablas adicionales con metadatos que solo llenan la memoria / espacio en disco.
Si está compilando directamente contra el simulador o un dispositivo, no le importará esos megabytes adicionales.
Por lo tanto, necesitamos ejecutar bucles adicionales para hacer algo muy básico y sencillo que todas las ideas que conozco desde el siglo pasado funcionan bien.
Y para agregar, para mí lo que funcionó fue cambiar en "Depurar" la optimización de tiempo de enlace de "Monolítico" a "No" (xcode 8).
fuente