109 votes

Débogage Xcode - affichage d'images

J'adore utiliser le débogueur Xcode. Vous pouvez consulter la valeur d'une variable et même la modifier.

Mais puis-je AFFICHER l'image référencée par une variable d'image d'une manière ou d'une autre ? Je sais que je peux voir ses octets bruts, mais ce serait beaucoup plus convivial d'afficher une fenêtre avec son contenu.

Xcode pourrait ne pas prendre en charge cela. Peut-être qu'il existe un outil externe qui aiderait à afficher les images ?

316voto

pkamb Points 918

Utilisez Quick Look pour inspecter les images dans le débogueur Xcode.

Sélectionnez une balise NSImage ou UIImage dans le débogueur, puis cliquez sur l'icône "oeil" de Quick Look.

Comme dans d'autres parties de OS X, vous pouvez également utiliser la touche espace pour Quick Look!

Affichage d'une UIImage dans le débogueur Xcode via Quick Look

Quick Look dans le débogueur peut également être implémentée pour vos propres classes:

Activer Quick Look pour les types personnalisés

La fonction Quick Look des variables dans le débogueur Xcode vous permet d'obtenir une évaluation visuelle rapide de l'état d'une variable d'objet grâce à un rendu graphique affiché dans une fenêtre popover soit dans la vue des variables du débogueur, soit directement dans votre code source.

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

17voto

Zaster Points 580

Si vous aimez travailler avec la console lldb, utilisez la commande chisel "visualize"

astuce :

après l'installation, vous pouvez définir un point d'arrêt conditionnel après avoir défini l'UIImage avec l'action : "visualize myUIImageToShowWithQuickLook"

entrer la description de l'image ici

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

16voto

Avraham Shukron Points 2556

MODIFIER :

A partir de 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 d'outils externes.

Ce que je fais pour tester les images en déboguant, c'est de convertir ces données brutes en un format de fichier image, comme .png, puis de les enregistrer quelque part, et ensuite j'ouvre l'image avec n'importe quel outil de visualisation d'images.

J'ai un morceau de code pour cela, qui ressemble essentiellement à cela:

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

Et je copie-colle simplement ce code là où je veux voir le contenu d'une image en cours d'exécution.

Assurez-vous de vous débarrasser de ce code dès que possible en raison du coût élevé de la conversion de UIImage en NSData

15voto

mackworth Points 4044

Modifier pour Xcode 5 : Maintenant, lorsque vous survolez un nom de variable d'image, il y a une icône "oeil" à droite. Il suffit de cliquer dessus pour voir l'image actuelle !

REMARQUE : parfois cela échoue dans Xcode, même si l'image est correcte. Si cela se produit, OU si vous n'avez pas de variable UIImage (par exemple, c'est une propriété d'un autre objet), vous pouvez toujours utiliser l'ancienne réponse :

Ancienne réponse : En commençant par la réponse d'Avraham, j'ai essayé quelques expérimentations pour afficher une image iOS depuis lldb sans avoir à recompiler ou à l'ajouter à une vue. J'ai finalement trouvé :

e [UIImagePNGRepresentation(myImage) writeToFile:@"/Users//Desktop/myImage.png" atomically:NO];

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

Si vous travaillez sur un appareil iOS, alors vous pouvez utiliser

 e [UIImagePNGRepresentation(myImage) writeToFile:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingString:@"/myImage.png"] atomically:NO];

Ensuite, vous pouvez utiliser le Finder ; sélectionnez votre appareil ; "Fichiers" ; puis votre appli de dev, et copiez l'image sur votre bureau pour la visualiser.

5voto

wyu Points 918

Que faire si vous ne pouvez pas accéder à l'image via la vue des variables?

En écho à ce que @pkamb a dit - vous pouvez utiliser la vue des variables pour jeter un coup d'œil rapide à une image. Mais que faire si vous ne pouvez pas accéder à l'image?

par exemple j'ai une image à (contentViewController.view.subviews[0].subviews[1] as? UIImageView).image

mais si j'essaie d'élargir contentViewController dans la vue des variables, cela n'expose pas mes sous-vues

insérer la description de l'image ici

ce que vous pouvez faire est de faire un clic droit, ajouter une expression, et ensuite vous pourrez le voir!

insérer la description de l'image ici

insérer la description de l'image ici

insérer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X