Xcode调试 - 显示图像

时间:2010-05-06 11:49:33

标签: xcode debugging

我喜欢使用Xcode调试器。您可以查看变量的值,甚至可以更改它。

但我可以以某种方式显示图像变量引用的图像吗?我知道我可以看到它的原始字节,但显示一个包含其内容的窗口会更加人性化。

Xcode可能不支持此功能。也许有一个外部工具可以帮助显示图像?

7 个答案:

答案 0 :(得分:218)

使用快速查看检查Xcode调试器中的图像。

在调试器中选择NSImageUIImage,然后点击快速查看“眼睛”图标。

"eye" icon in Xcode debugger toolbar

与OS X的其他区域一样,您也可以使用空格键进行快速查看!

Viewing a UIImage in the Xcode debugger via Quick Look

调试器中的快速查看也可以为您自己的类实现:

Enabling Quick Look for Custom Types

  

Xcode调试器中的变量Quick Look功能允许您通过图形渲染快速直观地评估对象变量的状态,在弹出窗口中显示在调试器变量视图中或源代码中的适当位置

     

本章介绍如何为自定义类类型实现快速查看方法,以便也可以在“快速查看”弹出窗口中以可视方式呈现这些类型的对象变量。

答案 1 :(得分:16)

修改

从Xcode 5开始,调试器可以显示UIImage / CGImageRef变量的可视化表示!

Xcode本身无法做到。我不知道外部工具。

我在调试时测试图像的目的是将原始数据转换为图像文件格式,如.png,然后将其保存到某处,然后我用任何图像查看工具打开图像。

我有一段代码用于此目的,看起来基本上就是这样:

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

我只是复制粘贴此代码,我希望在运行中看到图像的内容。

由于UIImage转换为NSData

的高成本,请务必尽快删除此代码

答案 2 :(得分:13)

编辑Xcode 5:

现在,当您将鼠标悬停在图像变量名称上时,右侧会出现一个“眼睛”图标。只需单击它即可查看当前图像!如果你没有UIImage变量(例如它是另一个对象的属性,你仍然可以使用较旧的答案:

旧答案: 老问题,但我正在寻找答案。从Avraham的回答开始,我尝试了一些实验来显示来自lldb的iOS图像,而无需重新编译或将其添加到视图中。我终于想到了:

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

我将此字符串保存在文本编辑器中,并在需要时将其粘贴。这会将我感兴趣的当前图像(在本例中为“watchImage”)存储到桌面上的PNG文件中。然后,我可以使用预览打开此文件。

答案 3 :(得分:11)

如果您想使用lldb控制台,请使用chisel命令“visualize”

提示:

安装后,您可以在使用操作设置UIImage后设置条件断点:  “visualize myUIImageToShowWithQuickLook”

enter image description here

这将在调试器停止时自动显示图像。

答案 4 :(得分:3)

如果无法通过变量视图查看图像怎么办?

呼应@pkamb所说的-您可以使用变量视图快速查看图像。但是,如果您看不到图片怎么办?

例如,我在(contentViewController.view.subviews[0].subviews[1] as? UIImageView).image有一张图片

但是如果我尝试在变量视图中展开contentViewController,则不会显示我的子视图

enter image description here

您可以做的就是右键单击,添加一个表达式,然后您就可以看到它!

enter image description here

enter image description here

enter image description here

答案 5 :(得分:1)

将鼠标悬停在Xcode中的变量上时,请点击眼睛图标:

Xcode eye icon

答案 6 :(得分:-5)

你可以在图像的行中放置一个断点,然后在调试器中写下:

po your_UIImage_object

po代表print object,这是一个GDB命令,它会显示关于传递的对象的几个有用的信息,在你的情况下是图像。