2010-02-23 8 views
6

मैं जिस एप्लिकेशन पर काम कर रहा हूं उस पर एक सेगफॉल्ट डीबग करने का प्रयास कर रहा हूं (पाठ्यक्रम के लिनक्स पर काम करता है, इसलिए मैं इसका उपयोग डीबगिंग कोर डंप के लिए नहीं कर सकता)। किसी भी तरह, मैंने "ulimit -c असीमित" सेट किया है और हिम तेंदुए की रिपोर्ट "सेगमेंटेशन गलती (कोर डंपेड)" है, लेकिन वहां कोई मूल फ़ाइल नहीं है। क्या हिम तेंदुए ने उन्हें कहीं खास रखा है या क्या मुझे कुछ अन्य विकल्प सक्षम करने की ज़रूरत है? आश्चर्यजनक रूप से थोड़ा लौटा जब मैं इसे Google ...क्या हिम तेंदुए ने कोर डंप को कहीं विशेष रखा है?

+0

क्या आप अपना आवेदन डीबगर (एक्सकोड या सादा जीडीबी) के तहत चला सकते हैं? –

+0

मैं कर सकता हूं, लेकिन यह अक्सर दर्द होता है, खासकर अगर मेरा कोड पाइथन या इसी तरह से जुड़ा हुआ है। अन्य बार segfaults पुन: उत्पन्न नहीं होते हैं, इसलिए मैं पोस्ट-मॉर्टम ठीक से –

उत्तर

6

आपको launchd कॉन्फ़िगर करने की आवश्यकता है ताकि यह वास्तव में कोर डंप को लिख सके। यदि आवश्यक हो तो इसे बनाने, और फिर पुन: प्रारंभ

limit core unlimited 

अपने /etc/launchd.conf फाइल करने के लिए: आप मूल रूप से इस Apple TechNote.

में ऐसा करने के लिए निर्देश प्राप्त कर सकते हैं, तो आप पंक्ति जोड़कर कोर डंप सक्षम करने के लिए की जरूरत है।

तुम भी फोन करके एक टर्मिनल सत्र के लिए कोर डंप सक्षम कर सकते हैं:

ulimit -c unlimited 

इससे पहले कि आप अपने कमांड लाइन एप्लिकेशन लॉन्च।

आप /cores में कोर डंप पा सकते हैं। सावधान रहें, क्योंकि कोर डंप बड़े हो सकते हैं और नियमित रूप से /cores निर्देशिका को साफ़ नहीं करते हैं तो आसानी से अपना ड्राइव भर सकते हैं।

+0

आह! बिल्कुल वही है जो मैं चाहता था! मुझे आश्चर्य है कि उन्होंने उन्हें कामकाजी निर्देशिका के बजाय वहां स्टोर करने का फैसला क्यों किया ... –

+0

मुझे संदेह है कि उन्हें साफ करना आसान है। यदि कोर डंप सिस्टम-व्यापी सक्षम हैं, तो सिस्टम के चारों ओर बिखरे हुए बहुत बड़ी फाइलें समाप्त हो सकती हैं यदि उन्हें कार्यशील निर्देशिका में रखा गया हो। –

1

यह सिर्फ एक जंगली अनुमान है, लेकिन क्या आपने /Library/Logs/DiagnosticReports/ जांच की?

+0

ऐसा करने में सक्षम होना चाहता हूं जैसे कि मुझे _do_ में एक है, मुझे नहीं पता कि मुझे लगता है कि कंप्यूटर का उपयोग कैसे करें। यद्यपि वहां कोई कोर फाइल नहीं है = ( –

+1

एप्लिकेशन क्रैश रिपोर्ट के लिए ~/लाइब्रेरी/लॉग/डायग्नोस्टिक रीपॉर्ट्स/प्रयास करें। ओएस एक्स पर,/लाइब्रेरी पेड़ प्रत्येक उपयोगकर्ता के लिए ~/लाइब्रेरी के अंतर्गत प्रतिबिंबित होता है। यदि आपका ऐप उपयोगकर्ता स्पेस में चलता है, ओएस एक्स क्रैश रिपोर्ट ~/लाइब्रेरी के तहत रखेगा। –