2012-10-20 6 views
0

lldb를 사용하여 Mountain Lion 10.8.2에서 Xcode 4.5.1로 iOS 응용 프로그램을 디버깅합니다. 때로는때로는 lldb po 명령이 객체 주소 만 반환합니다.

나는 경우 브레이크 포인트에서 사용하는 디버거 창에 바르를 조사하려고합니다 :

포 _currentSale

을하고 응답받을 것이다 : 자기의

인쇄 설명 -> _ currentSale : (판매 *) _currentSale = 0x081cd7e0

과 다른 시간을 나는 (내가 원하는이다)이 응답을 받게됩니다 :

자기 소개 -> _ currentSale : '<'세일 : 0x81cd7e0 '>'(엔티티 : 세일; id : 0x81dd670; 데이터 : { cardNumber = "\ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U2022 \ U20220001"; cvv = 222; emailAddress = "[email protected]"; expirationDate = 0413; lastStatus = 승인 됨; purchaseNumber = 00000008; saleAmount = 230; saleDate = "2012-10-20 08:06:45 +0000"; sectionIdentifier = 20121020; tipPercentage = 15; 거래 = ( "0x75df620 '<'x-coredata : // 4A0DEB78-C770-4CE2-8A5D-878F51294D6D/거래/p11 '>" " ); zipCode = 33333; }

가끔씩 나에게 개체 주소와 전체 설명을 제공하는 사이에 회신 내용이 다른 이유는 무엇입니까? 내 판매 오브젝트는 핵심 데이터 오브젝트입니다 (차이가 나는 경우).

답변

0

저는 긍정적이지는 않지만 lldb가 아닌 것 같습니다. . 정보의 재미있는 조각 - po 텍스트가 직접 자신을 _NSPrintForDebugger를 호출 V 그 제이슨에 대한

Process 10842 stopped 
* thread #1: tid = 0x1f03, 0x00000001000018f9 a.out`main + 153 at objc-prog.m:88, stop reason = step over 
    #0: 0x00000001000018f9 a.out`main(argc=1, argv=0x00007fff5fbffb18) + 153 at objc-prog.m:88 
    85 
    86  NSString *a = @"hi there"; 
    87 
-> 88  [object randomFunc]; 

(lldb) p a 
(NSString *) $1 = 0x0000000100002470 @"hi there" // lldb's built-in NSString summary formatter 

(lldb) po a 
(NSString *) $2 = 0x0000000100002470 hi there 

(lldb) p (char*)_NSPrintForDebugger(a) 
(char *) $4 = 0x000000010010f400 "hi there" 

(lldb) p (char*)_NSPrintForDebugger(0x0000000100002470) 
(char *) $3 = 0x0000000100114c60 "hi there" 
+0

감사를 쉽게 충분히 어디에서 오는 char *_NSPrintForDebugger(id)에 대한 호출을 통해 얇은 베니어, 당신은 테스트 할 수 있습니다. 나는 여전히 "인쇄 ​​설명"이 때때로 객체 주소 만 인쇄하고 다른 시간은 완전한 객체 정보를 인쇄하는 이유를 알지 못했습니다 (각 경우에 모든 정보가 NSLog 문에 의해 결정됨). Randy – codiac

+0

다음번에 _NSPrintForDebugger()를 호출 해보십시오. _NSPrintForDebugger()가 적절한 설명을 인쇄 할 수 있지만 lldb의 po가 아닌 경우 lldb 문제 일 가능성이 높습니다. –