Отладка Xcode - отображение изображений - PullRequest
73 голосов
/ 06 мая 2010

Я люблю использовать отладчик Xcode. Вы можете взглянуть на значение переменной и даже изменить его.

Но могу ли я каким-то образом ОТОБРАЗИТЬ изображение, на которое ссылается переменная изображения? Я знаю, что могу видеть его необработанные байты, но было бы намного удобнее для человека показать окно с его содержимым.

Xcode может не поддерживать это. Может быть, есть внешний инструмент, который поможет отображать изображения?

Ответы [ 6 ]

221 голосов
/ 30 октября 2013

Используйте Быстрый просмотр для проверки изображений в отладчике Xcode.

Выберите NSImage или UIImage в отладчике, затем щелкните значок «Взгляд» «Быстрый просмотр».

Как и в других областях OS X, вы также можете использовать пробел для быстрого просмотра!

Viewing a UIImage in the Xcode debugger via Quick Look

Быстрый просмотр в отладчике также может быть реализован для ваших собственных классов:

Включение быстрого просмотра для пользовательских типов

Функция быстрого просмотра переменных в отладчике Xcode позволяет получить быструю визуальную оценку состояния переменной объекта с помощью графического рендеринга, отображаемого во всплывающем окне в представлении переменных отладчика или на месте в исходном коде. .

В этой главе описывается, как реализовать метод Quick Look для пользовательских типов классов, чтобы переменные объектов этих типов также можно было визуально отображать в всплывающем окне Quick Look.

16 голосов
/ 20 февраля 2011

РЕДАКТИРОВАТЬ:

Начиная с Xcode 5, отладчик может отображать визуальное представление переменных UIImage / CGImageRef!

Сам Xcode не может этого сделать.Я не знаю о внешних инструментах.

Что я делаю, чтобы проверить изображения во время отладки, чтобы преобразовать эти необработанные данные в формат файла изображения, например .png, а затем сохранить его где-нибудь, а затемЯ открываю изображение с помощью любого инструмента для просмотра изображений.

У меня есть для этого кусок кода, который выглядит примерно так:

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

И я просто копируювставить этот код, где я хочу видеть содержимое изображения на ходу.

Убедитесь, что избавились от этого кода как можно скорее из-за высокой стоимости преобразования UIImage в NSData

13 голосов
/ 31 августа 2013

Редактировать для Xcode 5:

Теперь, когда вы наводите курсор на имя переменной изображения, справа будет значок «глаз». Просто нажмите на него, чтобы увидеть текущее изображение! Если у вас нет переменной UIImage (например, это свойство другого объекта, вы все равно можете использовать более старый ответ:

Старый ответ: Старый вопрос, но я искал ответ. Начав с ответа Авраама, я попробовал несколько экспериментов для отображения образа iOS с lldb без необходимости перекомпиляции или добавления его в представление. Я наконец-то придумал:

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

Я сохраняю эту строку в текстовом редакторе и вставляю ее, когда мне это нужно. Это сохраняет текущее интересующее меня изображение (в данном случае «watchImage») в файл PNG на рабочем столе. Тогда я могу просто открыть этот файл с помощью предварительного просмотра.

11 голосов
/ 19 августа 2015

Если вам нравится работать с консолью lldb, используйте команду chisel команда "visualize"

Совет:

после установки вы можете установить условную точку останова после установки UIImage с помощью действия: "визуализировать myUIImageToShowWithQuickLook"

enter image description here

это покажет вам изображение автоматически, когда отладчик остановится.

3 голосов
/ 01 ноября 2018

Что делать, если вы не можете добраться до изображения через просмотр переменных?

Повторяю сказанное @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

0 голосов
/ 14 августа 2012

Вы можете поставить точку останова в строке вашего изображения, а затем в отладчике, просто напишите:

po your_UIImage_object

po означает print object, это команда GDB, которая отобразит несколько полезных сведений о переданном объекте, в вашем случае изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...