2013-03-06 10 views
6

में अंतिम 2 कॉल दिखाता है वर्तमान में एक्सकोड के साथ समस्या निवारण में समस्या है। सभी स्टैक निशान केवल पिछले दो कॉल दिखाते हैं। lldb कंसोल का भी उपयोग नहीं कर सकता। उदाहरण के लिए एक सरल unrecognized selector त्रुटि केवल पता चलता यह पता लगाने के लिए लॉग इनएलएलडीबी स्टैक ट्रेस केवल एक्सकोड

* thread #1: tid = 0x2503, 0x32d2e960 libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 1.1 
    frame #0: 0x32d2e960 libobjc.A.dylib`objc_exception_throw 
    frame #1: 0x37c4ae06 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 170 
+0

मुझे एक ही समस्या है ... मैं मैक ओएस एक्स 10.7 का उपयोग कर रहा हूं और मैंने पहले से ही mdimport किया है। सभी प्रतीकों फ़ोल्डरों में। क्या आपने इसे हल किया? –

उत्तर

6

डीबगर से [NSThread callStackSymbols] प्रिंट करने का प्रयास करें, जो कभी-कभी डीबगर नहीं होने पर काम करता है। यह वास्तव में मुझे आश्चर्य नहीं करता है कि

इसके अतिरिक्त, मेरा अनुभव यह है कि जीडीबी कहीं अधिक विश्वसनीय है।

+0

gdb (और 'callStackSymbols') सीधे स्टैक चलना करते हैं। एलएलडीबी यह निर्धारित करने के लिए विधि के निर्देश का निरीक्षण करता है कि रजिस्टरों को कैसे बचाया जाता है और ढेर का उपयोग किया जाता है। हाथ पर एलएलडीबी स्टैकवॉक पिछले साल में सुधार हुआ है लेकिन ओबीजे-सी हाथ-अनुकूलित प्रेषण दिनचर्या सही ढंग से विश्लेषण करने के लिए बहुत कठिन हैं। जीडीबी और 'कॉलस्टैकसिंबल्स' द्वारा उपयोग किए जाने वाले सरल फॉलो-द-फ्रेम-चेन एल्गोरिदम भी अन्य मामलों में विफल हो जाएंगे, इनमें से कोई भी सही ढंग से काम नहीं करेगा। अवांछित ढेर बहुत मुश्किल हो सकता है। –

+0

@ जेसनमोलान्डा मुझे पूरा यकीन है कि जीडीबी एक बेवकूफ स्टैक चलना नहीं करता है - अक्सर यह बैकट्रैक देने में असफल रहता है जहां 'कॉलस्टैकसिंबल्स' काम करता है। –

+0

अच्छी चाल। धन्यवाद! इच्छा है कि कम परेशानी तय हो। :( – Kalle

5

एक साधारण XCode पुनः आरंभ समस्या हल हो। लेकिन थोड़ी देर बाद यह बग चल रहा है। मैं इसके बारे में एक बग की रिपोर्ट करूंगा।

+0

सरल लेकिन प्रभावी। धन्यवाद! मुझे भी यही समस्या थी। डीबगर केवल पिछले दो स्टैक ट्रेस तत्व दिखाएगा। आविष्कार सभी सादे सरल स्थैतिक विधि कॉल थे। एक्सकोड के पुनरारंभ ने इसे हल किया। –

0

उद्देश्य-सी रनटाइम फ़ंक्शंस के माध्यम से अनइंडिंग हाथ पर मुश्किल हो सकता है, असेंबली हाथ से ट्यून किया गया है और एलएलडीबी को यह पता लगाना मुश्किल हो सकता है कि उन्हें कैसे पीछे हटाना है। इस मामले में ऐसा लगता है कि यह एक फ्रेम आगे बढ़ गया है और फिर कहीं भी नहीं मिल सका।

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