Подтвердить что ты не робот

Отладка Xcode - отображение изображений

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

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

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

4b9b3361

Ответ 1

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

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

"eye" icon in Xcode debugger toolbar

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

Viewing a UIImage in the Xcode debugger via Quick Look

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Совет:

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

введите описание изображения здесь

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

Ответ 5

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

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

Ответ 6

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

po your_UIImage_object

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