Xcode 디버거에서 NSDictionary 변수의 내용을 보는 방법은 무엇입니까?


85

Xcode 디버거를 통해 NSDictionary 변수의 키 / 값 쌍을 보는 방법이 있습니까? 변수 창에서 완전히 확장되었을 때의 정보 범위는 다음과 같습니다.

Variable  Value      Summary
jsonDict  0x45c540   4 key/value pairs
 NSObject {...}
  isa     0xa06e0720

사전의 각 요소 (배열 변수와 유사)를 표시 할 것으로 예상했습니다.

답변:


140

gdb 창 po에서 객체를 검사하는 데 사용할 수 있습니다 .

주어진:

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];

객체가 추가 된 후 중단 점을 설정하면 사전에있는 내용을 검사 할 수 있습니다.

(gdb) po dict
{
  bar = foo;
  buz = fiz;
}

물론 이것들은 NSString멋지게 인쇄 되는 개체입니다. 다른 복잡한 개체와 YMMV.


7
안녕하세요! gdb 란 무엇입니까? 포는 무엇입니까? 잘 모르겠습니다 ... 도와 주셔서 감사합니다! :)
Martin

1
그래서 GDB는 GNU 디버거를 의미하며 실제로 Xcode의 디버거 창이라는 것을 알았습니다. 이제 po가 무엇인지 찾아야합니다
Martin

18
확인! 따라서 gdb는 실제로 콘솔에서 명령을 입력 할 수있는 프롬프트입니다. "po object_name"을 입력하면 콘솔에 개체 내용이 인쇄됩니다.
Martin

7
po는 print-object의 별칭입니다.
Brad Cupit 2010

훌륭한! PHP에서 "echo var_dump ()"또는 "print_r ()"과 동일합니다.
mpemburn

30

개체 (ObjC 또는 Core Foundation) 변수를 마우스 오른쪽 단추로 클릭하고 "콘솔에 설명 인쇄"(실행-> 변수보기에서도)를 선택할 수 있습니다. 이것은 -debugDescription기본적으로를 호출하는 obejct의 메소드 결과를 인쇄 합니다 -description. 불행히도, NSDictionary일반적으로 신경 쓰지 않는 많은 내부 데이터를 생성하기 위해 이것을 재정의 하므로이 특정 경우 craigb의 솔루션이 더 좋습니다.

표시된 키와 값도를 사용 -description하므로 컬렉션 및 다른 곳에서 개체에 대한 유용한 정보를 원하는 경우 재정의 -description가 필수입니다. 일반적으로 기본 NSObject구현 의 형식과 일치하도록 다음 줄을 따라 구현합니다.

-(NSString *) 설명
{
    return [NSString stringWithFormat : @ "<% @ % p> {foo : % @}", [self class], self, [self foo]];
}

6

CFShow ()를 사용할 수 있습니다.

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);

출력에서 볼 수 있습니다

{
  bar = foo;
  buz = fiz;
}

3

XCode 4.6은 도움이 될 수있는 다음 기능을 추가했습니다.

The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger

이제 콘솔에서 전체 개체를 인쇄하지 않고도 이러한 개체 유형을 검사 할 수 있습니다. 즐겨!

출처 : http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html


단지 쇼에 내있는 NSDictionary의 일부 -이 나를 위해 버그가
폴 슬로 컴

1

딕셔너리를 클릭 한 다음 작은 "i"아이콘을 클릭하면 작업이 수행됩니다. :-) Xcode5, dict의 값보기


1

최신 XCode의 중단 점 작업으로 인쇄하려면 (예, 원래 게시 한 지 10 년 후입니다!) "로그 메시지"작업에 다음 중단 점 식을 사용합니다.

@ myDictionary.description @

아래는 변수 이벤트가 NSString이고 변수 contextData가 내용을 기록중인 NSDictionary 인 중단 점 작업의 스크린 샷입니다 .


0

NSLog를 사용할 수도 있습니다 .

또한 디버그 영역 또는 xcode로 이동 All Variables, Registers, Globals and Statics한 다음 변수 를 찾은 다음 선택할 수 있습니다. 그것을 마우스 오른쪽 버튼으로 클릭하십시오. 그런 다음Print description of "...."

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.