2010-07-11 11 views
42

Esto me sucede bastante a menudo. Por ejemplo, ahora tengo el depurador detenido en un punto de interrupción en un método. . . y no muestra ningún valor de variable en absoluto. Otras veces, muestra algunas, pero no otras.El depurador de Xcode a veces no muestra valores variables?

¿Alguien puede explicarlo?

+1

Hola William, alguna vez has encontrado la solución. Tengo el mismo problema. Muy molesto. Entonces necesito hacer NSLog todo el tiempo; el depurador xcode está realmente lisiado para funcionar de esta manera. –

+0

Nunca lo hice, me temo –

+2

En la parte inferior de la vista variable hay un pequeño menú con entradas: Automático, Variables locales y Todo. –

Respuesta

36

La razón más común para esto es que está tratando de depurar el código compilado con la optimización habilitada y/o sin símbolos de depuración. Por lo general, esto se debe a que está intentando depurar una compilación de versión en lugar de una compilación de depuración, pero también puede ocurrir con compilaciones de depuración si ha realizado cambios inapropiados en la configuración de compilación de depuración.

Otra posibilidad menos común es que hayas rociado la pila.

+4

Gracias por la respuesta, pero estoy bastante seguro de que ninguno de ellos se aplica en mi caso. –

+4

He cambiado temporalmente el esquema de ejecución a Release en lugar de Debug y lo he olvidado. Cambiando de nuevo fijo. Gracias. – leontx

+3

optimización! gracias, deshabilitar eso hizo el truco. –

0

Si está utilizando la característica @property de Objective-C 2.0, el depurador no muestra esas variables a menos que estén respaldadas por referencias explícitas en su interfaz Class. Esto está programado para ser reparado en Xcode 4 como lo entiendo.

6

He tenido problemas similares al usar LLDB. Volver a cambiarlo a GDB parece abordarlo. Obviamente, esto no resuelve el problema, pero es una solución de todos modos

+5

Para mí, las variables se muestran normalmente cuando la ejecución se detuvo en un punto de interrupción, excepto en los puntos de interrupción de excepciones. Esto fue un gran dolor en el culo. Afortunadamente, al cambiar a GDB lo arreglé para mí. ¿Por qué Apple no puede hacer que su Xcode actúe en conjunto? –

0

solución temporal cuando happpen a mí: Haga clic derecho sobre la propiedad salto a la definición (u puede hacerlo de forma manual, y vaya a la @synthesize en el parte superior del archivo)

ahora, si la línea es la siguiente:

@synthesize myObject = _myObject;

configure el cursor del mouse en "_myObjects". eso que funcionó para mí ... cuando tengo problemas.

5

Usted puede obtener el valor de cualquier variable en la consola escribiendo:

po name_of_an_objectCVar 

o

print name_of_a_cVar 
+1

Esto no responde la pregunta del OP. – phatmann

1

Sé que esto es viejo, pero me encontré con el mismo problema también. No pude ver ningún resumen de ningún objeto, solo tipos y algún código de dirección. Después de 4 horas luchando con compiladores, depuradores y otras soluciones, estaba a punto de darme por vencido cuando, por accidente, encontré esta opción en el depurador. "Mostrar resúmenes". Simplemente haciendo clic en él, todo se solucionó y ahora veo todos los resúmenes variables.

enter image description here

0

me di cuenta de por qué no está trabajando en Xcode 4.6 - todas las variables en mi objeto, auto, fueron declarados en el archivo .m en lugar de la .h. Cuando moví uno de ellos al archivo .h, apareció en el depurador. Suena como un error con XCode en que no puede "ver" las variables declaradas en el archivo de implementación.

8

Una posible solución es establecer el nivel de optimización para su esquema de depuración objetivo actual en ninguno.

Proyecto -> Destino -> configuración de generación -> El nivel de optimización -> Depuración (o lo que se adapte a su proyecto) -> Ninguno

Fuente:

https://stackoverflow.com/a/14948486/3590753

0

Para mí trabaja cambiando la contenido del panel de variables de visualización al Local Variables y luego de vuelta al Auto.

Esta solución funcionó en XCode 6.3.2, proyecto tipo Swift.

1

Tuve el mismo problema al utilizar Xcode 6.4 ejecutando la aplicación en el dispositivo. Al ejecutar en el simulador, se mostrarán todas las variables en el panel de variables de depuración.

1

Hay una situación que he visto donde Xcode no puede hacer frente a la optimización del valor de retorno (RVO): si el compilador decide aplicar el RVO a una variable, es posible que no aparezca en la lista de variables. Puede desactivar esta en g ++ y sonido metálico con la bandera compilador -fno-elide-constructors

Véase también Understanding eliding rules with regard to c++11

+0

¡Esto me lo resolvió gracias! ¿Esto debería ser un valor predeterminado para las compilaciones de depuración, o pueden otros depuradores manejarlo (por ejemplo, gdb)? – focs

+0

Intentamos apagar el compilador pero causó problemas en nuestros proyectos porque algunos archivos no se compilaron con él, supongo que es todo o nada. –

+0

¿Entonces no funciona bien si lo tienes si solo para algunos archivos? – focs

16

tuve este problema (utilizando Swift), pasé edades arrastrándose a través de mis git compromete a encontrar dónde problema comenzado.

xcode debugging variables not working or showing


Para mí, yo estaba usando Facebook biblioteca retoques, pero yo era (innecesariamente) importarlo de mi archivo project-bridging-header.h.

Una vez que me deshice de él, recuperé mi depuración.

por ejemplo, en mi cabecera de puente que tenían:

#ifndef PROJECT_Bridging_Header_h 
#define PROJECT_Bridging_Header_h 
// Facebook Tweaks 
#import "FBTweak.h" 
#import "FBTweakStore.h" 
#import "FBTweakCategory.h" 
#import "FBTweakCollection.h" 
#import "FBTweakViewController.h" 
#import "FBTweakShakeWindow.h" 
#endif 

He quitado todas las importaciones y acaba de importar como de costumbre en mi AppDelegate import Tweaks.

por ejemplo:

#ifndef PROJECT_Bridging_Header_h 
#define PROJECT_Bridging_Header_h 
// Removed Facebook Tweaks 
#endif 

y en mi AppDelegate.swift

import Tweaks 

Esto fija todos mis problemas de depuración, todo funciona como se esperaba y también puedo usar Facebook Ajustes.

Nota: No creo que esto es un problema con el mismo Facebook Ajustes, puede tener alguna otra biblioteca causando el mismo problema. La idea es eliminar cosas de su bridging-header una por una y ver si puede reducir el problema.

Creo que he leído en alguna parte que si una biblioteca está causando muchos problemas entre bastidores, esto puede evitar que funcione su depurador.

Si esto no ayuda, intente rastrear su git commits y vea en qué etapa se detuvo la depuración.otros

cuestiones similares sobre SO:

Xcode Debugging not showing values

Xcode debugger doesn't display variable information after installing CocoaPods Podfile

Si usted está teniendo problemas similares que esto ayuda!

+1

He encontrado el mismo problema, al cambiar a la versión de Cartago de un marco de terceros. Me olvidé de eliminar .h del archivo de encabezado de puente y no tuve ninguna advertencia al respecto. –

0

Debe desactivar dos tipos de optimizaciones de compilación en la configuración de compilación. De forma predeterminada, el nivel de optimización "compilación rápida - generación de código" para la creación de depuración se establece en rápido. Debe configurar esto para ninguno. También verifique que la optimización "apple llvm 7.1 - generación de código" esté configurada en none para la creación de depuración. Finalmente, compruebe que está creando la compilación de depuración en la sección "arquitecturas" de la configuración de compilación.

Espero que esto ayude.

0

Me he quedado atrapado un tiempo con este problema y finalmente encuentro una solución. Creo que muchas razones pueden causar este error, pero en mi caso, aquí está la solución. Mientras se encuentra en la posición de punto de interrupción, consulte las clases incluidas. Incluí el uso de comillas dobles en un archivo que se encuentra utilizando include path.

#include "MyClass.h" 

en lugar de

#include <MyPorject/MyClasses/MyClass.h> 

Así que si usted tiene este problema a tratar de comprobar su inclusión e importación. Sé que parece extraño pero funcionó para mí y he podido reproducirlo al incluir el doble-presupuesto.

2

Si su punto de interrupción ha "continuará automáticamente después de evaluar las opciones de" conjunto, entonces no va a escribir a la vista de variables - FYI

0

Mi problema era que no tenía dirección de desinfectante permitido. Desactivación de desinfectante para resolver mi problema en Xcode 8.2.1

1

Para Swift mezclar Proyecto OC que utilizan vainas

fijación mediante la eliminación de cabecera inútil (que la importación con el marco por vaina) xx-puente-Header.h

por ej. En el pasado importo cabecera con #import "GCDAsyncSocket.h" la que se añadió en PODFILE

platform:ios, '8.0' use_frameworks! target "roocontrollerphone" do pod 'CocoaAsyncSocket' end

acaba de quitar en ese archivo xx-Bridging-Header.h

0

Una posible razón para el depurador muestra aparentemente equivocadas valores es que la el tipo de variable es de Any?.

E.g.

var a: Any? = 12 
var b: Int? = a as? Int // b=13483920750 
var c: Int = a as? Int ?? 0 // c=1 

En el ejemplo anterior, b mantiene el valor correcto de 1 a pesar de que no se muestra como tal.

Cuestiones relacionadas