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.