2010-05-06 13 views
54

Ich liebe die Verwendung von Xcode Debugger. Sie können sich jederzeit die Werte der Variablen ansehen, Sie können sie sogar ändern.Xcode debuggen - Bilder anzeigen

Das Problem steigt, wenn u Bilder testen, und hier erscheint die Frage:

Kann ich irgendwie das Bild an, das durch die Bild Variable verwiesen wird? Ich weiß, dass ich rohe Bytes davon sehen kann, aber es wäre viel menschlicher freundlich, wenn das ein Fenster mit seinem Inhalt öffnen würde.

Xcode unterstützt möglicherweise nicht. Vielleicht gibt es ein externes Tool, das dabei helfen könnte?

Antwort

16

EDIT:
Ab Xcode 5 kann der Debugger zeigen Ihnen die visuelle Darstellung von UIImage/CGImageRef Variablen!

XCode selbst kann es nicht tun. Ich weiß nichts über externe Tools.

Was ich tue, um Bilder während des Debuggens zu testen, besteht darin, diese Rohdaten in ein Bilddateiformat wie .png zu konvertieren und dann irgendwo zu speichern, und dann öffne ich das Bild mit jedem Bildanzeigewerkzeug .

Ich habe ein Stück Code zu diesem Zweck, die im Grunde so aussehen:

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

und ich bin copy-Einfügen nur den Code, wo i Inhalt eines Bildes auf der Flucht sehen will.

Stellen Sie sicher, aufgrund der hohen Kosten für die Umwandlung von UIImage so schnell wie möglich dieses Codes loszuwerden NSData

+2

nur neugierig: warum sagst du "(und sollte es nicht tun)"? Es gab einmal eine Zeit, in der Leute sagten, dass Computer "keine" Farbbildschirme haben sollten, weil sie zu teuer waren, oder dass ein Texteditor, der von Programmierern benutzt wurde, "nicht" Syntax Ihren Code überprüfen sollte. Irgendwann müssen wir sicherlich von archaischen Ideen abkommen? – unsynchronized

+0

Ok, also nehme ich das "sollte nicht" zurück. Ich möchte eines Tages IDEs Bilder beim Debuggen interpretieren. –

+0

Das ist eine großartige Idee und hat mir nur geholfen - danke. So etwas ist offensichtlich, wenn jemand darauf hinweist, aber immer noch ein großartiger Zeiger. –

-5

Sie einen Haltepunkt in der Zeile des Bildes setzen, und dann im Debugger nur schreiben:

po your_UIImage_object 

po steht für print object, es ist ein GDB-Befehl, der einige nützliche Informationen angezeigt werden über das Objekt übergeben, in Ihrem Fall ist das Bild.

+1

Wenn Sie po mit dem UIImage-Objekt direkt verwenden, wird nur die Klassenadresse des Instanz-Namens an die Konsole ausgegeben. Etwas wie: Daniel

10

Bearbeiten für Xcode 5:
Wenn Sie jetzt den Mauszeiger über einen Bildvariablennamen bewegen, wird rechts ein "Augen" -Symbol angezeigt. Klicken Sie darauf, um das aktuelle Bild zu sehen! Wenn Sie nicht über eine UIImage Variable (zB es eine Eigenschaft eines anderen Objekts ist, können Sie noch die ältere Antwort benutzen:

Ältere Antwort. alte Frage, aber ich war Suche nach einer Antwort mit Avraham Antwort starten, ich habe versucht, ein paar Experimente für ein iOS-Bild von LLDB anzeigt, ohne dass es zu einer Ansicht neu zu kompilieren oder fügen sie kam ich endlich auf mit:.

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

ich halte diese Zeichenfolge in einem Texteditor und fügen sie ihn, wenn ich brauche Es speichert das aktuelle Bild, an dem ich interessiert bin (in diesem Fall "watchImage"), in eine PNG-Datei auf dem Desktop. Dann kann ich diese Datei einfach mit Vorschau öffnen.

+0

+1000000 Dies ist eine erstaunliche Lösung! Ich möchte hinzufügen, dass wenn Sie auf dem Gerät debuggen, können Sie etwas wie iFunBox oder iExplorer verwenden, um das Bild vom Gerät abzurufen. – Quentin

+0

Sie können sogar direkt schreiben "/ Benutzer/ /"; Auf diese Weise müssen Sie nicht nach Ihrem temporären Ordner über GUIDs suchen. –

+0

Guter Vorschlag (beachten Sie, dass Sie/Users//verwenden müssen, es funktioniert nicht mit ~ /). Der Vorschlag wurde entsprechend aktualisiert. – mackworth

162

Verwenden Sie Quick Look, um Bilder im Xcode-Debugger zu überprüfen.

Wählen Sie im Debugger UIImage oder NSImage aus und klicken Sie dann auf das Symbol "Auge".

enter image description here

Wie andere Bereiche von OS X, können Sie auch spacebar zu Quick Look verwenden!

Viewing a UIImage in the Xcode debugger via Quick Look

Quick Look im Debugger kann auch für Ihre eigenen Klassen implementiert werden:

Enabling Quick Look for Custom Types

Die Variablen Quick Look-Funktion in der Xcode-Debugger ermöglicht Ihnen eine schnelle visuelle zu erhalten Bewertung des Zustands einer Objektvariable durch ein grafisches Rendering, das in einem Popover-Fenster entweder in der Debugger-Variablenansicht oder an Ort und Stelle in Ihrem Quellcode angezeigt wird.

In diesem Kapitel wird beschrieben, wie Sie eine Quick Look-Methode für Ihre benutzerdefinierten Klassentypen implementieren, sodass Objektvariablen dieser Typen auch visuell im Quick Look Popover-Fenster gerendert werden können.

+8

Beste. Feature. Je! – Sevren

+2

Dies ist die wertvollste Antwort des Jahres! – vedrano

+0

Wenn nur das OP die Antwort akzeptieren würde! Danke @CROLakiluk – pkamb

7

Wenn Sie mit der LLDB Konsole arbeiten, verwenden chisel Befehl „visualisieren“

Tipp:

nach der Installation können Sie einen bedingten Haltepunkt festgelegt, nachdem die UIImage mit der Aktion einstellen: "visualisieren myUIImageToShowWithQuickLook"

enter image description here

das Sie das Bild zeigen automatisch, wenn der Debugger beendet wird.