2012-07-16 26 views
10

Estoy escribiendo una aplicación de iOS y necesito ayuda para usar el depurador de Xcode incorporado. Supongamos que tengo un objeto llamado HomeViewController que tiene tres propiedades¿Cómo imprimir los contenidos de una propiedad usando Xcode depurador?

@property (nonatomic) BOOL finished; 
@property (nonatomic, strong) NSArray *myArray; 
@property (nonatomic, strong) NSString *myName; 

@synthesize finished = _finished, myArray = _myArray, myName = _myName; 

Supongamos que tengo un punto de interrupción en esta clase. ¿Cómo vería el contenido de estas propiedades? He intentado cosas como po myName, print myName y print [self myName], pero no puedo encontrar la manera de hacerlo. Intenté usar LLDB pero sigo recibiendo el mismo error que encontró esta persona (lldb fails to print variable values with "error: reference to 'id' is ambiguous"). La respuesta aceptada a esta pregunta fue: LLDB está roto y debería usar GDB; sin embargo, me niego a aceptar que algo tan fundamental se haya roto.

Sin embargo, también he intentado utilizar GDB con comandos similares a los anteriores; sin embargo, tampoco puedo hacer que GDB funcione. Ayuda por favor

Respuesta

23

Una vez que se coloca un punto de interrupción, ejecutar, y el programa se detiene en el punto de interrupción, coloca el cursor sobre la variable/valor que desea ver como esto:

enter image description here

Usted podría también lugar un NSLog(@"%@", yourLabel.text); para ver el contenido de esa etiqueta/otro tipo de objeto.

Otra opción es ejecutar el BGF en la consola de la siguiente manera:

gdb 
attach <your process name> 

y luego usar el po (impresión a objetos) de comandos para ver el valor de una variable de la siguiente manera:

po variableName 

para ver el valor de los tipos primitivos (int, float, long, double, char, etc.), sólo puede utilizar el comando whil print e ejecutando GDB en la consola de esta manera:

print yourPrimitiveVariable 

Espero que esto ayude!

EDIT:

Con el comando po, puede imprimir el valor de un objeto utilizando tanto el nombre de la propiedad (self.myProperty) o el nombre Ivar (posiblemente _myProperty). Demuestro esto aquí:

enter image description here

+0

Entonces, si uso po, ¿tengo que imprimir el ivar o hay una forma de imprimir con el nombre de la propiedad?(a veces mis propiedades tienen nombres diferentes a los de su variable correspondiente) – Nosrettap

+0

@Nosrettap Intente usar el nombre de la propiedad y, si no funciona, intentaré encontrar una solución alternativa. – pasawaya

+0

@Nosrettap - Probé los comandos 'po' y' print' y parece que funciona bien tanto con la propiedad como con el nombre de ivar. Ver mi actualización ... – pasawaya

2

Pruebe con expresión siguiente en el área de depuración para imprimir objeto,

p self.view.bounds.size.width 

o uso,

po self.view 

p - Imprimir sólo se utiliza para imprimir valores normales/simples while, po - Objeto de impresión funciona igual que NSLog para imprimir el valor de un objeto

Cuestiones relacionadas