2015-03-02 9 views
7

मेरा ऐप क्रैश हो रहा है और ऐसा लगता है कि यह अपवाद ब्रेकपॉइंट (जो समझ में आता है) में पकड़ा गया है, लेकिन मैं दुर्घटना के कारण तक पहुंचने में असमर्थ हूं।एक्सकोड 6 में अपवाद ब्रेकपॉइंट पर अपवाद कैसे प्रिंट करें?

यहाँ मैं क्या कोशिश की है:

  • po $eax
  • po $rax
  • po $r0
  • po *(id *)($esp + 4)

सभी प्रयास से ऊपर मैं निम्न त्रुटि हो रही है के लिए:

error: use of undeclared identifier '$<register name>' error: 1 errors parsing expression

मैं भी इस LLDB Command Guide पाया है, लेकिन उपयोगी कुछ भी (एक सा यह भ्रामक आप नहीं जानते कि आप क्या खोज रहे हैं) नहीं मिला।

मैं क्रैश के कारण को कैसे मुद्रित कर सकता हूं?

मैं iOS 8, lldb और Xcode चल रहा हूँ 6.

संपादित

अब मैं देख रहा हूँ क्यों इन रजिस्टरों नहीं पाए जाते हैं। यहाँ मैं क्या मिलता है जब मैं register read चलाएँ:

General Purpose Registers: 
x0 = 0x0000000000000001 
x1 = 0x0000000000000000 
x2 = 0x0000000000000000 
x3 = 0x0000000195531a74 libsystem_malloc.dylib`nano_free_definite_size 
x4 = 0x0000000000000000 
x5 = 0x0000000000000000 
x6 = 0x676e697274534643 
x7 = 0x0000000000000f80 
x8 = 0x00000001569d5a10 
x9 = 0x0000000000000000 
x10 = 0x000001a574056051 
x11 = 0x0000000000000001 
x12 = 0x000000000000003d 
x13 = 0x0000000000000000 
x14 = 0x0000000000000001 
x15 = 0x0000000000000052 
x16 = 0x0000000194d6e510 libobjc.A.dylib`object_setClass 
x17 = 0x0000000000000000 
x18 = 0x0000000000000000 
x19 = 0x00000001702823f0 
x20 = 0x0000000174038eaa 
x21 = 0x000000019130a778 "release" 
x22 = 0x0000000000000000 
x23 = 0x0000000174246d20 
x24 = 0x0000000174038ea0 
x25 = 0x00000001895d22fa "forwardingTargetForSelector:" 
x26 = 0x00000001745186a0 
x27 = 0x0000000000000000 
x28 = 0x00000000a40008ff 
fp = 0x0000000105757720 
lr = 0x000000018462a440 CoreFoundation`___forwarding___ + 968 
sp = 0x00000001057576c0 
pc = 0x000000018462a440 CoreFoundation`___forwarding___ + 968 
cpsr = 0x20000000 

आप इन लोगों का इस्तेमाल किया मैं पहले की कोशिश की थी के किसी भी शामिल नहीं है रजिस्टरों हैं देख सकते हैं। हालांकि, मैं अभी भी अपवाद नहीं ढूंढ पा रहा हूं।

xcode view

+0

[एक्सकोड/जीडीबी का संभावित डुप्लिकेट: केवल अपवाद के बारे में जानकारी कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/3327828/xcode-gdb-how-to-get-information-about -अन-अपवाद-वह-बस-फेंक दिया गया था) –

उत्तर

4

तुम बस टाइप करना चाहिए:

po $arg1

अधिक जानकारी के लिए देखें: How to replace NSUncaughtExceptionHandler with definition in Breakpoint navigator?

+0

प्रश्न में '$ arg1' के लिए कोई विकल्प नहीं है। तो, अपने अपवाद ब्रेकपॉइंट के भीतर आपने जो परिभाषित किया है उसे ठीक से जांचें। मेरा मतलब है कि आपने क्या क्रिया परिभाषित की है? क्या आप एक स्क्रीन संलग्न कर सकते हैं? –

+0

ठीक है, यह यहां काम नहीं करता है: http://stackoverflow.com/questions/31403719/using-of-symbolic-breakpoints-for-child-classes-in-xcode/31527538?noredirect=1#comment51049128_31527538 और यहां : http://natashatherobot.com/xcode-debugging-trick/ सामान्य रूप से - इसे '$ arg1' भी नहीं मिल सकता है, इसलिए यह हमेशा काम नहीं करेगा आप इसे एक्सेस करने का प्रयास करें –

+0

आप सही हैं, वे काम कर रहे हैं एक्सकोड 7 के लिए। –

0

पिछले जवाब से Rickster की टिप्पणी पर जोर देते हुए:

सुनिश्चित करें कि आप का चयन बनाओ सही फ्रेम

po $arg1 डीबग नेविगेटर में शीर्ष "मशीन कोड" फ्रेम का चयन करने के बाद मेरे लिए काम किया।

संबंधित मुद्दे