Отладка Xcode - отображение изображений
Я люблю использовать отладчик Xcode. Вы можете взглянуть на значение переменной и даже изменить его.
Но могу ли я как-то отобразить изображение, на которое ссылается переменная изображения? Я знаю, что могу видеть его необработанные байты, но было бы намного удобнее для человека отобразить окно с его содержимым.
Xcode может не поддерживать это. Может быть, есть внешний инструмент, который поможет отображать изображения?
Ответы
Ответ 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, которая отобразит несколько полезных сведений об переданном объекте, в вашем случае изображение.