0

lldb を使用して、Mountain Lion 10.8.2 で Xcode 4.5.1 を使用して iOS アプリをデバッグしています。

ブレークポイントで次のコマンドを使用して、デバッガー ウィンドウで iVar を調べようとすることがあります。

po _currentSale

そして返信を受け取ります:

self->_currentSale の印刷記述: (Sale *) _currentSale = 0x081cd7e0

また、この返信を受け取ることもあります(これが私が望んでいることです):

self->_currentSale の印刷説明: '<'Sale: 0x81cd7e0'>' (entity: Sale; id: 0x81dd670 ; data: { car​​dNumber = "\U2022\U2022\U2022\U2022\U2022\U2022\U2022\U2022\U2022 \U2022\U2022\U20220001"; cvv = 222; emailAddress = "k@w.com"; 有効期限 = 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/Transaction/p11'>'"); zipCode = 33333; }))

オブジェクトのアドレスを教えてくれる場合と完全な説明を教えてくれる場合とでは、返信が異なるのはなぜですか? 私の販売オブジェクトは Core Data オブジェクトです (違いがある場合)。

4

1 に答える 1

0

私は肯定的ではありませんが、これは lldb からのものではないと思います。 poへの呼び出しに対する薄いベニアです。テキストがどこから来ているかを自分で直接char *_NSPrintForDebugger(id)呼び出すことで簡単にテストできます。v._NSPrintForDebugger

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"
于 2012-10-21T21:39:58.423 に答える