डिबग करने के लिए मैं एक त्रुटिकैसे EXC_BAD_ACCESS बग
EXC_BAD_ACCESS कोड = 2 at0xb0987654
मैं 0xb0987654 पर मूल्य प्रिंट आउट के लिए कैसे सोच रहा हूँ प्राप्त?
डिबग करने के लिए मैं एक त्रुटिकैसे EXC_BAD_ACCESS बग
EXC_BAD_ACCESS कोड = 2 at0xb0987654
मैं 0xb0987654 पर मूल्य प्रिंट आउट के लिए कैसे सोच रहा हूँ प्राप्त?
एक EXC_BAD_ACCESS डीबग करने के लिए, आप आम तौर पर यह पता लगा सकते हैं कि लैंडिंग पॉइंटर ज़ोंबी ऑब्जेक्ट्स को सक्षम करके कहां है।
Xcode
संपादित योजना चुनें, भागो खंड में तो निदान टैब, फिर 'ज़ोंबी वस्तुओं' विकल्प पर क्लिक करें।
AppCode
चुनें संपादित करें लक्ष्य, और निम्नलिखित वातावरण चर जोड़ें:
NSZombieEnabled=YES
EXC_BAD_ACCESS का एक अन्य कारण अनंत प्रत्यावर्तन, कुछ लॉगिंग जोड़कर देखा जा सकता है हो सकता है। सी ++ के लिए
अद्यतन:
++ बजना संकलक के साथ झूलते सी में संकेत दिए गए डिबग करने के लिए गूगल से Address Sanitizer (ASAN) उपयोग करके देखें।
मैंने कोशिश की, कोई उपयोग नहीं। चूंकि यह समस्या उत्पन्न करने वाला सी ++ कोड है। –
@AdamLee इसके बारे में कैसे? http://stackoverflow.com/questions/3199067/c-catching-dangling-reference –
@AdamLee, ओह, ऐसा लगता है कि मडफ्लैप केवल जीसीसी है, क्लैंग/llvm –
ऐसा लगता है कि आप एक कोड पेज या कुछ लिखने की कोशिश कर रहे हैं? EXC_BAD_ACCESS /usr/include/mach/exception_types.h में वर्णित है:
#define EXC_BAD_ACCESS 1 /* Could not access memory */
/* Code contains kern_return_t describing error. */
/* Subcode contains bad memory address. */
और kern_return.h से:
#define KERN_PROTECTION_FAILURE 2
/* Specified memory is valid, but does not permit the
* required forms of access.
*/
जहां आप देख सकते है कि पता अपनी बाइनरी में है ऐसा करके:
(lldb) image lookup -va 0xb0987654
लेकिन आपको वास्तव में यह जानने की आवश्यकता है कि वहां कौन लिखने की कोशिश कर रहा है। यदि समस्या सरल है तो यह आपको बता सकता है कि क्या गलत है, लेकिन जैसा कि जैस्पर सुझाव देता है, शायद यह कुछ उपयोग-मुक्त या अन्य ऐसी समस्या है, और खराब अभिनेता लंबे समय तक दुर्घटनाग्रस्त हो गया है। गार्डमॉलोक कभी-कभी इस तरह की त्रुटि को पकड़ सकता है (आप इसे रन योजना में एक्सकोड में सक्षम कर सकते हैं।)
' एलएलडीबी में छवि लुकअप -वा 0x1586470c4' मुझे कोई आउटपुट नहीं देता है, यहां तक कि एक त्रुटि संदेश भी नहीं। –
वर्तमान में "छवि लुकअप-ए" सिर्फ किसी दिए गए पते पर यह पता लगा सकता है कि "किसी भी पते पर कोई प्रतीक नहीं" के मामले में, जब भी कुछ भी नहीं है ... एलएलडीबी को वास्तव में कुछ त्रुटि प्रिंट करनी चाहिए जब यह नहीं हो सकती किसी दिए गए पते से जुड़े किसी भी प्रतीक को ढूंढें। कृपया इसके बारे में ऐप्पल के बग रिपोर्टर या lldb.llvm.org बगजिला के साथ एक बग दर्ज करें। धन्यवाद। –
पहचानें कि आपने क्रैश के कारण क्या किया है। किसी विशेष व्यू कंट्रोलर को लोड या किसी प्रतिनिधि विधि में या किसी विशेष कार्रवाई पर देखते हुए यह क्रैश हो गया था। यह अक्सर उस ऑब्जेक्ट को खोजने में मदद करेगा जो त्रुटि का सामना कर रहा है।
मुझे आशा है कि यह आपकी मदद करेगा।
सादर, GISON
मैं तुम्हें उस पते पर मूल्य प्रिंट आउट करना चाहते हैं नहीं है कि बहुत पता पहली जगह में आपकी समस्या है के बाद से लगता है। क्या * आपको वहाँ मिला * पूछने का सवाल है। – Jay