2010-05-06 16 views
54

Me encanta usar Xcode depurador. En cualquier momento puedes echar un vistazo a los valores de la variable, incluso puedes cambiarlos.Depuración de Xcode: mostrar imágenes

El problema se levanta cuando u están poniendo a prueba las imágenes, y aquí surge la pregunta:

¿hay algún modo la imagen que hace referencia la variable de imagen? Sé que puedo ver bytes sin procesar, pero sería mucho más amigable para los humanos si eso hiciera aparecer una ventana con su contenido.

Es posible que Xcode no lo admita. Tal vez hay una herramienta externa que ayudaría con eso?

Respuesta

16

EDIT:
A partir de Xcode 5, el depurador puede mostrar que la representación visual de las variables UIImage/CGImageRef!

XCode en sí no puede hacerlo. No sé sobre herramientas externas.

Lo que estoy haciendo para probar imágenes mientras se depura es convertir esos datos en formato de archivo de imagen, como .png, y luego guardarlo en algún lugar, y luego abro la imagen con cualquier herramienta de visualización de imágenes .

que tienen una porción de código para ese propósito, que parecen básicamente así:

NSData *imageData = UIImagePNGRepresentation(self.myUIImage); 
[imageData writeToURL:desktopURL atomically:YES]; 

y estoy solo copiar y pegar el código donde quiero ver el contenido de una imagen en la carrera.

Asegúrese de deshacerse de este código tan pronto como sea posible debido al alto costo de la conversión de UIImage a NSData

+2

simplemente curioso: ¿por qué dices "(y no deberías) hacerlo"? Hubo una vez en que las personas decían que las computadoras "no deberían" tener pantallas en color, ya que eran demasiado caras o que un editor de texto utilizado por los programadores "no debería" verificar su código. en algún momento debemos pasar de ideas arcaicas, ¿no? – unsynchronized

+0

Ok, entonces tomo el "no deberías" volver. Desearía que algún día IDE interpretara imágenes mientras depura. –

+0

Esta es una gran idea y me ha ayudado, gracias. Algo obvio una vez que alguien lo señala, pero sigue siendo un gran puntero. –

-5

Se puede poner un punto de interrupción en la línea de su imagen, y luego en el depurador , acaba de escribir:

po your_UIImage_object 

po representa print object, es un comando BGF que mostrará varias informaciones útiles sobre el objeto pasa, en su caso la imagen.

+1

En realidad, al usar po con el objeto UIImage directamente solo se imprimirá en la consola la dirección de memoria del nombre de clase de la instancia. Algo como: Daniel

10

Editar para Xcode 5:
Ahora cuando desplace el puntero sobre el nombre de una variable de imagen, habrá un icono de "ojo" a la derecha. ¡Simplemente haz clic para ver la imagen actual! Si no tiene una variable UIImage (por ejemplo, es propiedad de otro objeto), puede utilizar la respuesta anterior:

Respuesta anterior: Pregunta anterior, pero estaba buscando una respuesta. Comenzando con la respuesta de Abraham, he probado unos cuantos experimentos para mostrar una imagen iOS de LLDB sin tener que recompilar o añadirlo a una vista que finalmente ocurrió:.

po [UIImagePNGRepresentation(watchImage) writeToFile:@"/Users/<userName>/Desktop/watchImage.png" atomically:NO]; 

guardo esta cadena en un editor de texto y pegarlo en cuando necesito Esto almacena la imagen actual que me interesa (en este caso, "watchImage") en un archivo PNG en el Escritorio. Luego puedo abrir este archivo con Vista previa.

+0

+1000000 ¡Esta es una solución increíble! Me gustaría agregar que si está depurando en el dispositivo, puede usar algo como iFunBox o iExplorer para recuperar la imagen del dispositivo. – Quentin

+0

Incluso puede escribir directamente en "/ Users/ /"; de esta manera no tendrá que buscar su carpeta temporal a través de los GUID –

+0

. Buena sugerencia (tenga en cuenta que debe usar/Users/ /, no funciona con ~ /). Actualizó la sugerencia en consecuencia. – mackworth

162

Utilice Vista rápida para inspeccionar imágenes en el depurador de Xcode.

Seleccione un UIImage o NSImage en el depurador, luego haga clic en el ícono de "Vista rápida".

enter image description here

Al igual que otras áreas de OS X, también puede utilizar la barra espaciadora a Quick Look!

Viewing a UIImage in the Xcode debugger via Quick Look

Quick Look en el depurador se puede implementar también para sus propias clases:

Enabling Quick Look for Custom Types

El variables de función Quick Look en el depurador de Xcode permite obtener una rápida visual evaluación del estado de una variable objeto a través de una representación gráfica, que se muestra en una ventana emergente en la vista de variables del depurador o en su código fuente.

En este capítulo se describe cómo implementar un método de búsqueda rápida para los tipos de clase personalizados, de modo que las variables de objeto de esos tipos también se puedan representar visualmente en la ventana emergente de búsqueda rápida.

+8

Mejor. Característica. ¡Nunca! – Sevren

+2

¡Esta es la respuesta más valiosa del año! – vedrano

+0

¡Si solo el OP aceptara la respuesta! Gracias @CROLakiluk – pkamb

7

Si te gusta trabajar con la consola LLDB, utilice chisel comando de "visualizar"

consejo:

después de la instalación, se puede establecer un punto de interrupción condicional después de ajustar el UIImage con la acción: "visualizar myUIImageToShowWithQuickLook"

enter image description here

esto le mostrará la imagen automáticamente cuando el depurador se detiene.

Cuestiones relacionadas