लिनक्स एप्लिकेशन के क्रैश से उत्पन्न कोर फ़ाइल की खोज कहां करें?


19

मैं अपने एक लिनक्स अनुप्रयोग के लिए दुर्घटना का कारण जानने की कोशिश कर रहा हूँ। लेकिन मुझे नहीं पता कि कोर कहां जा रहा है।

cat /proc/sys/kernel/core_pattern
core.%e.%p

कोई उपाय?

जवाबों:


23

क्रैश के समय कोर डंप प्रक्रिया की वर्तमान निर्देशिका में लिखा गया है।

बेशक कोर डंप को सक्षम करने की आवश्यकता है, डिफ़ॉल्ट रूप से वे आमतौर पर अक्षम होते हैं। के आउटपुट की जाँच करें ulimit -c, यदि वह 0 है तो कोई कोर फाइल नहीं लिखी जाएगी। ulimit -c unlimitedकोर डंप को सक्षम करने के लिए चलाएं ; यह एक प्रति-प्रक्रिया सेटिंग है जो उस प्रक्रिया द्वारा शुरू की गई प्रक्रियाओं द्वारा विरासत में मिली है।

यदि एक कोर डंप उत्पन्न किया जाना चाहिए था, लेकिन आपको पता नहीं है कि कहां है, तो आप फिर से प्रक्रिया शुरू कर सकते हैं (यदि यह तुरंत दुर्घटनाग्रस्त हो जाएगा), तो प्रक्रिया की प्रक्रिया आईडी ls -l /proc/$pid/cwdकहां $pidहै यह करके इसकी कार्यशील निर्देशिका की जांच करें । यह लिंक उस प्रक्रिया की वर्तमान कार्यशील निर्देशिका को इंगित करेगा। संभावना है कि कोर डंप होगा। अन्यथा आपको findपूरे सिस्टम पर चलने की आवश्यकता है ...


3
मैंने ulimit -c को इसकी असीमित जांच की है, लेकिन अभी भी प्रक्रिया की वर्तमान निर्देशिका में कुछ भी नहीं है।
डीसी

1
यह संभव है कि एप्लिकेशन ने स्वयं एक घातक त्रुटि का पता लगाया और निरस्त कर दिया, अर्थात यह एक "वास्तविक" दुर्घटना नहीं है जैसे कि एक विभाजन उल्लंघन या समान, जो एक कोर डंप उत्पन्न करेगा । जैसा कि आप आवेदन के बारे में कोई जानकारी नहीं देते हैं, यह जानना संभव नहीं है।
बरहलाल

1
यह निश्चित रूप से एक दुर्घटना coz मैं जानबूझकर एक शून्य सूचक कर रहा है।
dcds

20

सिस्टमड का उपयोग करने वाले सिस्टम आमतौर पर कोर को डंप करने के लिए कॉन्फ़िगर किए जाते हैं

/var/lib/systemd/coredump/

आप coredumpctlकोर डंप को सूचीबद्ध करने के लिए कमांड का उपयोग कर सकते हैं । यह भी देखें कि अधिक-नहीं- coredumps-after-migrating-to-systemd

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.