developer tip

Xcode 디버깅-이미지 표시

optionbox 2020. 10. 13. 07:40
반응형

Xcode 디버깅-이미지 표시


저는 Xcode 디버거를 사용하는 것을 좋아합니다. 변수의 값을보고 변경할 수도 있습니다.

그러나 이미지 변수가 참조하는 이미지를 어떻게 든 표시 할 수 있습니까? 원시 바이트를 볼 수 있지만 내용이있는 창을 표시하는 것이 훨씬 더 인간 친화적 일 것입니다.

Xcode는 이것을 지원하지 않을 수 있습니다. 이미지를 표시하는 데 도움이되는 외부 도구가 있습니까?


Quick Look사용 하여 Xcode 디버거에서 이미지를 검사합니다.

를 선택 NSImage하거나 UIImage디버거에서 다음 훑어보기 "눈"아이콘을 클릭합니다.

Xcode 디버거 도구 모음의 "눈"아이콘

OS X의 다른 영역과 마찬가지로 spacebarQuick Look 에도 사용할 수 있습니다 !

Quick Look을 통해 Xcode 디버거에서 UIImage보기

디버거의 Quick Look은 자체 클래스에 대해 구현할 수도 있습니다.

사용자 지정 유형에 대한 훑어보기 활성화

Xcode 디버거의 변수 훑어보기 기능을 사용하면 그래픽 렌더링을 통해 개체 변수의 상태를 빠르게 시각적으로 평가할 수 있으며, 디버거 변수보기 또는 소스 코드의 위치에있는 팝 오버 창에 표시됩니다.

이 장에서는 사용자 정의 클래스 유형에 대해 Quick Look 메서드를 구현하여 해당 유형의 개체 변수를 Quick Look 팝 오버 창에서 시각적으로 렌더링 할 수도 있습니다.


편집하다:

Xcode 5부터 디버거는 UIImage / CGImageRef 변수의 시각적 표현을 보여줄 수 있습니다!

Xcode 자체로는 할 수 없습니다. 나는 외부 도구에 대해 모른다.

디버깅하는 동안 이미지를 테스트하기 위해 내가하는 일은 원시 데이터를 .png와 같은 이미지 파일 형식으로 변환 한 다음 어딘가에 저장 한 다음 이미지보기 도구로 이미지를 여는 것입니다.

기본적으로 다음과 같은 목적을위한 코드가 있습니다.

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

그리고이 코드를 복사하여 실행중인 이미지의 내용을보고 싶은 곳에 붙여넣고 있습니다.

확인의 전환의 높은 비용이 수 때문에 가능한 한 빨리이 코드를 제거 할 수 있도록 UIImage하는NSData


Xcode 5 편집 :

이제 이미지 변수 이름 위로 마우스를 가져 가면 오른쪽에 "눈"아이콘이 표시됩니다. 클릭하면 현재 이미지를 볼 수 있습니다! UIImage 변수가없는 경우 (예 : 다른 개체의 속성 인 경우에도 이전 답변을 사용할 수 있습니다.)

이전 답변 : 이전 질문이지만 답변을 찾고있었습니다. Avraham의 답변으로 시작하여 다시 컴파일하거나 뷰에 추가하지 않고도 lldb에서 iOS 이미지를 표시하는 몇 가지 실험을 시도했습니다. 나는 마침내 다음을 생각 해냈다.

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

이 문자열을 텍스트 편집기에 보관하고 필요할 때 붙여 넣습니다. 이것은 내가 관심있는 현재 이미지 (이 경우 "watchImage")를 데스크탑의 PNG 파일에 저장합니다. 그런 다음 미리보기로이 파일을 열 수 있습니다.


lldb 콘솔로 작업하려면 chisel 명령 "visualize"를 사용하십시오.

팁:

설치 후 "visualize myUIImageToShowWithQuickLook"조치로 UIImage를 설정 한 후 조건부 중단 점을 설정할 수 있습니다.

여기에 이미지 설명 입력

그러면 디버거가 중지 될 때 이미지가 자동으로 표시됩니다.


변수보기를 통해 이미지를 볼 수 없다면 어떻게해야합니까?

@pkamb가 말한 것을 반향-변수보기를 사용하여 이미지를 빠르게 볼 수 있습니다. 하지만 이미지를 얻을 수 없다면 어떨까요?

예를 들어 나는 이미지가 (contentViewController.view.subviews[0].subviews[1] as? UIImageView).image

하지만 contentViewController변수보기에서 확장하려고 하면 내 하위보기가 노출되지 않습니다.

여기에 이미지 설명 입력

당신이 할 수있는 것은 마우스 오른쪽 버튼을 클릭하고 표현식을 추가하면 볼 수 있습니다!

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력


이미지 줄에 중단 점을 넣은 다음 디버거에서 다음과 같이 작성할 수 있습니다.

po your_UIImage_object

po을 의미하며 print object전달 된 객체 (귀하의 경우 이미지)에 대한 몇 가지 유용한 정보를 표시하는 GDB 명령입니다.

참고 URL : https://stackoverflow.com/questions/2780793/xcode-debugging-displaying-images

반응형