Intentar ingresar al código de AFNetworking genera la siguiente advertencia:
[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
Y, por supuesto, no puedo depurar el código. Para ser específico, estoy tratando de depurar la UIImageView+AFNetworking
categoría que parece imposible. Cambiar el código no tiene ningún efecto (intentado NSLog
, etc.) y cuando intenta ingresar a los compiladores va al código de ensamblaje y se muestra UIImageView+TVASTAFNetworking
como un nombre de categoría que no existe en ninguna parte de la base del código.
Uso de Xcode 7. iOS 9 y 8. Cocoapods (sin marco)
ACTUALIZACIÓN
Olvidé mencionar que Optimizer está configurado para la configuración none
de lanzamiento y depuración y de hecho estoy usando Debug
config.
ACTUALIZACIÓN 2
Strip Debug Symbols
Está apagado también.
ios
afnetworking-2
xcode7
Mojtaba
fuente
fuente
Strip Debug Symbols
está apagado.Respuestas:
Si su proyecto está utilizando Swift, hay dos configuraciones separadas de "Nivel de optimización" en la configuración del proyecto / destino.
Asegúrese de configurarlos correctamente:
None [-O0]
para LLVM yNone [-0none]
Swift) para la configuración de compilación en cuestión.Hacer esto resolvió esa advertencia para mí.
fuente
po
,p
,expr
...?Parece que su proyecto está en modo Release. El modo de lanzamiento compila la aplicación con muchas optimizaciones, pero los depuradores odian las optimizaciones, por lo que para depurar de manera confiable la aplicación, debe cambiarla al modo de depuración que reduce la optimización y agrega un montón de información de depuración. Para cambiarlo al modo de depuración:
fuente
Esta advertencia solo aparece cuando alcanza un punto de interrupción y la fuente está en un proyecto donde la optimización está habilitada, evitando que vea valores de variables reales (cada objeto se muestra como nulo, incluso si no lo está)
En mi caso, solo sucedió al depurar paso a paso a través de una dependencia de cocoapod.
Por lo tanto, incluso si tiene su objetivo principal y la configuración del proyecto configurados correctamente (Símbolo de depuración de tira = DESACTIVADO y Nivel de optimización Ninguno), debe asegurarse de que sea el mismo para el proyecto Pod desde el que está llegando al punto de interrupción.
fuente
None [-O0]
)pod install
. Cámbialo así .Resulta que después de importar un proyecto antiguo (Xcode 7.x +) a un nuevo Xcode 8.3 (8E162), probablemente debido a la optimización del compilador, el Compilador Swift - Nivel de optimización se configuró por defecto en Optimización rápida de un solo archivo :
Cambiándolo a ninguno, resolvió el problema:
fuente
Editor
->Validate Settings
luego confirma todos los cambios. Entonces deberías obtenerEstablezca Depuración en
None
.fuente
Esta fue la solución para mí ...
En la línea de la respuesta de gimino, si está utilizando cocoapods, agregue una línea como esta al Podfile:
o para versiones de cocoapods> = 1.0 (gracias Diejmon)
Donde MyProject tiene 'Debug - local', 'Debug - staging', 'Debug - PRODUCTION' como configuraciones de depuración además del estándar 'Debug'
De forma predeterminada, los cocoapods generalmente generarán configuraciones de pod como Release, esta línea de Podfile le permite decirle que son depuración.
fuente
Me encontré con el mismo problema hoy, y lo descubrí (al menos en mi caso). También estoy usando CocoaPods, y estaba teniendo este problema al ejecutar mi objetivo de prueba (Swift mezclado con ObjC).
Estoy usando Xcode 7.2, con iOS 9.2 SDK.
En la imagen a continuación, puede ver las optimizaciones para el objetivo y el proyecto antes de mi cambio:
Lo sorprendente es que, aunque la optimización resuelta es Ninguna [-O0] , solo después de cambiar la configuración del proyecto de -Os a -O0 el compilador dejó de optimizar el objetivo.
A continuación puedes ver mi configuración final:
fuente
Ha pasado mucho tiempo, pero finalmente resolví el problema. Hay un tercer indicador de optimización
LTO
oLink Time Optimization
e Sorprendentemente nadie habría mencionado aquí y por alguna razón que no prestó atención a ella tampoco. Está justo encima de laOptimization Level
configuración, como puede ver en muchas capturas de pantalla publicadas aquí.Para resumirlo, hay 3 indicadores de optimización diferentes que desea desactivar para la depuración:
-flto
)-O
)Más información sobre LTO: http://llvm.org/docs/LinkTimeOptimization.html
fuente
Si necesita deshabilitar las optimizaciones para sus módulos Swift para poder depurarlos, agregue lo siguiente a su
Podfile
. Esto deshabilitará las optimizaciones solo para compilaciones de depuración.fuente
¿Está seguro de que su configuración de depuración no optimiza el código (no debería)? Parece que accidentalmente ha habilitado optimizaciones para la configuración de depuración y debe desactivarlo desde la configuración del objetivo.
fuente
Este error me ocurrió dos veces, y en todos los casos fue un error en el parámetro de URL utilizado para solicitar un servicio. En un caso, la URL tenía algo de espacio en la sección del puerto, en el otro caso, algún valor opcional no se estaba desenvolviendo.
Entonces, la solución fue asegurarse de que la URL de la solicitud esté bien formada. Más información sobre mi caso e informes similares aquí .
fuente
Todo lo que hice fue limpiar (
Product > Clean
) mi proyecto y ejecutarlo nuevamentefuente
Esto puede ser una simplificación excesiva, pero ¿está compilando para Release o con optimización (que elimina los símbolos de Swift o LLVM) demasiado alta? Si es así, edite su esquema y cambie a Depurar, o edite su Configuración de compilación para la optimización rápida o LLVM a Ninguno (0).
fuente
En caso de que alguien se enfrente a este problema mientras depura un pod que usa una biblioteca C internamente, hay otra cosa que debe cambiar en la configuración del proyecto para que funcione además de todo lo demás enumerado en el hilo.
Vaya a la configuración del proyecto Pods -> Su objetivo de uso de C -> Configuración de compilación -> Apple Clang - Banderas personalizadas del compilador -> Otras banderas de C y elimine la
-O3
bandera que llegó allí de alguna manera.fuente