2010-05-06 6 views
54

J'adore utiliser le débogueur Xcode. Vous pouvez à tout moment jeter un coup d'œil aux valeurs de la variable, vous pouvez même les changer.Débogage Xcode - Affichage des images

Le problème augmente lorsque u testent des images, et pops ici la question:

Puis-je afficher en quelque sorte l'image qui est référencée par la variable d'image? Je sais que je peux voir des octets bruts, mais ce serait beaucoup plus humain si cela faisait apparaître une fenêtre avec son contenu.

Xcode peut ne pas le prendre en charge. Peut-être existe-t-il un outil externe qui pourrait aider à cela?

Répondre

16

EDIT:
Au Xcode 5, le débogueur peut vous montrer la représentation visuelle des variables UIImage/CGImageRef!

XCode lui-même ne peut pas le faire. Je ne connais pas les outils externes. Ce que je fais pour tester des images pendant le débogage est de convertir ces données brutes dans un format de fichier image, comme .png, puis de l'enregistrer quelque part, puis j'ouvre l'image avec n'importe quel outil de visualisation d'image .

J'ai un morceau de code à cet effet, qui ressemblent essentiellement comme ça:

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

Et je suis juste copier-coller ce code où je veux voir le contenu d'une image sur la course.

Assurez-vous de se débarrasser de ce code le plus tôt possible en raison du coût élevé de la conversion de UIImage-NSData

+2

juste curieux: pourquoi dites-vous "(et ne devrait pas) le faire"? Il était une fois une époque où les gens disaient que les ordinateurs «ne devraient pas» avoir d'écrans couleur, car ils étaient trop chers, ou qu'un éditeur de texte utilisé par les programmeurs «ne devrait pas» vérifier la syntaxe de votre code. à un moment donné, nous devons nous éloigner des idées archaïques, sûrement? – unsynchronized

+0

Ok, donc je prends le "ne devrait pas" de retour. Je souhaite un jour IDE va ​​interpréter les images lors du débogage. –

+0

C'est une excellente idée et juste m'a aidé - merci. Sorte d'évidence une fois que quelqu'un le signale, mais toujours un bon pointeur. –

-5

Vous pouvez mettre un point d'arrêt dans la ligne de l'image, puis dans le débogueur , il suffit d'écrire:

po your_UIImage_object 

po est synonyme de print object, il est une commande GDB qui affiche plusieurs informations utiles sur l'objet passé, dans votre cas, l'image.

+1

En fait, utiliser po avec l'objet UIImage n'imprimera directement sur la console que l'adresse de mémoire de nom de classe de l'instance. Quelque chose comme: Daniel

10

Éditer pour Xcode 5:
Maintenant, lorsque vous passez la souris sur un nom de variable d'image, il y aura une icône «œil» sur la droite. Il suffit de cliquer dessus pour voir l'image actuelle! Si vous n'avez pas de variable UIImage (par exemple, c'est une propriété d'un autre objet, vous pouvez toujours utiliser la réponse la plus ancienne:

Ancienne question, mais je cherchais une réponse à partir de la réponse d'Avraham, J'ai essayé quelques expériences pour afficher une image iOS de LLDB sans avoir à recompiler ou l'ajouter à une vue je me suis finalement venu avec:.

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

Je garde cette chaîne dans un éditeur de texte et le coller quand j'ai besoin Cela stocke l'image actuelle qui m'intéresse (dans ce cas, "watchImage") dans un fichier PNG sur le bureau.Puis je peux simplement ouvrir ce fichier avec Aperçu

+0

+1000000 C'est une solution incroyable! Je voudrais ajouter que si vous déboguez sur l'appareil, vous pouvez utiliser quelque chose comme iFunBox ou iExplorer pour récupérer l'image de l'appareil. – Quentin

+0

Vous pouvez même écrire directement dans "/ Users/ /"; De cette façon, vous n'aurez pas à chercher votre dossier temporaire via les GUID –

+0

Bonne suggestion (notez que vous devez utiliser/Users/ /, cela ne fonctionne pas avec ~ /). Mise à jour de la suggestion en conséquence. – mackworth

162

Utilisez Coup d'œil pour inspecter les images dans le débogueur Xcode.

Sélectionnez un UIImage ou NSImage dans le débogueur, puis cliquez sur l'icône Quick Look "œil".

enter image description here

Comme d'autres domaines de Mac OS X, vous pouvez également utiliser barre d'espace à Quick Look!

Viewing a UIImage in the Xcode debugger via Quick Look

Quick Look dans le débogueur peut également être mis en œuvre pour vos propres classes:

Enabling Quick Look for Custom Types

Les variables fonction Quick Look dans le débogueur de Xcode vous permet d'obtenir un visuel rapide l'évaluation de l'état d'une variable d'objet à l'aide d'un rendu graphique, affichée dans une fenêtre contextuelle soit dans la vue des variables du débogueur, soit en place dans votre code source.

Ce chapitre explique comment implémenter une méthode Quick Look pour vos types de classe personnalisée afin que les variables d'objet de ces types puissent également être rendues visuellement dans la fenêtre de survol Quick Look.

+8

Mieux. Fonctionnalité. Déjà! – Sevren

+2

C'est la réponse la plus précieuse de l'année! – vedrano

+0

Si seulement le OP acceptait la réponse! Merci @CROLakiluk – pkamb

7

Si vous aimez travailler avec la console LLDB, utilisez la commande chisel « visualiser »

conseil:

après l'installation, vous pouvez définir un point d'arrêt conditionnel après avoir réglé le UIImage à l'action: "visualiser myUIImageToShowWithQuickLook"

enter image description here

cela vous montrera l'image automatiquement lorsque le débogueur s'arrête.

Questions connexes