2010-06-20 6 views
7

estoy usando Xcode 3.2.3 y iPhone SDKXcode, no hay símbolos de depuración para cierta subclase

Así que estoy tratando de depurar una subclase UIView, que alcanzó un punto de interrupción en un método reemplazado y no puedo ver cualquier símbolo en la GUI o gdb, solo globales y registros.

Esto es lo que veo:

(gdb) po self 
No symbol "self" in current context. 

Sin embargo, cuando me puse un punto de interrupción en una subclase UIViewController, todos los símbolos están ahí:

(gdb) po self 
<MyViewController: 0x5c18ae0> 
Current language: auto; currently objective-c 

Algunas cosas que he intentado:

  • limpiar todo/reconstruir
  • reiniciar Xcode
  • cambio entre depurar y liberar
  • config estas opciones en el Proyecto ajustes:
    • GCC_DEBUGGING_SYMBOLS = Todos
    • Símbolos DEBUG_INFORMATION_FORMAT = enano, ENANO w/dSYM archivo
    • BUILD_VARIANTS = normal, depurar
  • amenazando a Xcode jurando y escribiendo rm -rf /Developer en un aviso de root bash

Por favor ayuda, mis dedos están sangrando de depuración con NSLog

Respuesta

3

Así se cambia de depuración a lanzamiento hizo el truco y tengo todos mis símbolos de depuración.

Creo que es solo un error en el 4.0 SDK.

+0

Entonces, ¿debería marcar esto como respondido? – Dad

+0

Esto funcionó para mí también. No es intuitivo en absoluto. Cambiando para liberar compilación para que pueda obtener los símbolos ... –

4

Experimento este error a menudo. Mi solución es escribir el comando bt en la consola gdb, luego se ordena automáticamente y comienza a reconocer símbolos en el contexto actual.

+0

Esta respuesta funcionó inmediatamente para mí en XCode 8. ¡Fantástica respuesta! –

0

Hmmm, intenté reproducir esto en 3.2.3 y SDK4 Final sin éxito - capaz de depurar la subclase UIView como se esperaba. ¿Esto ocurre usando una de las versiones beta?

0

Me sucede a mí, en una versión no beta. Me acabo de dar cuenta de que solo se produce al llamar a un método definido por la clase, es decir, (+) no (-)

No me importaría no tener un puntero "propio", pero también parece eliminar todas las variables locales muestra en el depurador, y eso es simplemente incorrecto.

0

El método de MTS funcionó para mí. Cambiar de depuración a versión corrige este problema. Que extraño. Puedo refutar la teoría del software evolucionado, ya que experimento el error dentro de un método de instancia.

0

en gdb tipo bt.

Si ve auto = < valor temporalmente fuera de servicio, debido a optimizaciones > en cualquier lugar que se debe a Xcode se ha establecido para ser optimizado.

Ve a la configuración de compilación y escribe optimización.

Si el nivel de optimización para depuración o versión está establecido en El número más rápido es el que está causando el problema.

La versión debe dejarse al más rápido para que su código funcione bien al construir para la distribución. Es mejor cambiar la configuración de compilación en Scheme.

opt + clic en el botón Ejecutar. A la izquierda, haga clic en Ejecutar YourAppsName.app, luego en Información y seleccione depurar.

Cuestiones relacionadas