2011-01-27 15 views
11

मैं कोर डंप में शामिल अनुभागों और मेमोरी क्षेत्रों का चयन करने का एक तरीका ढूंढ रहा हूं।
मेरा आवेदन की कोर डंप आकार 30GB के बारे में है, इसमें से अधिकांश पूर्व आबंटित बफ़र जो मैं भी डिबगिंग में की जरूरत नहीं है (और बाद में ध्यान केंद्रित किया जा सकता है) में है। हालांकि, चूंकि डंप इतना बड़ा है, एप्लिकेशन को क्रैश होने और पुनर्प्राप्ति शुरू करने में बहुत अधिक समय लगता है।
क्या कोई भी पहले से चुनने का तरीका सोच सकता है कि कौन से सेगमेंट कोर डंप में होंगे?
धन्यवादलिनक्स में चुनिंदा कोर डंप - मैं डंप किए गए अनुभागों का चयन कैसे कर सकता हूं?

उत्तर

16

core(5) मैनपेज के अनुसार, आप सेट कर सकते हैं जो मैपिंग कोर फाइल करने के लिए लिखा जाता है:

गिरी 2.6.23 के बाद से, लिनक्स विशिष्ट /proc/पीआईडी ​​/ coredump_filter फ़ाइल हो सकता है जो स्मृति खंडों में घटना है कि एक कोर डंप इसी प्रक्रिया ID प्रक्रिया के लिए प्रदर्शन किया है कोर डंप फ़ाइल के लिए लिखा जाता नियंत्रित करने के लिए इस्तेमाल किया।

फ़ाइल में मूल्य स्मृति मानचित्रण प्रकार का एक सा मुखौटा है (mmap को देखने के (2))। थोड़ा नकाब में सेट कर दिया जाता है, तो इसी प्रकार के स्मृति मैपिंग फेंक दिया जाता है; अन्यथा वे डंप नहीं हैं। इस फाइल में बिट्स निम्नलिखित अर्थ है :

 bit 0 Dump anonymous private mappings. 
     bit 1 Dump anonymous shared mappings. 
     bit 2 Dump file-backed private mappings. 
     bit 3 Dump file-backed shared mappings. 
     bit 4 (since Linux 2.6.24) 
       Dump ELF headers. 
     bit 5 (since Linux 2.6.28) 
       Dump private huge pages. 
     bit 6 (since Linux 2.6.28) 
       Dump shared huge pages. 

डिफ़ॉल्ट रूप से, निम्न बिट्स सेट कर रहे हैं: 0, 1, 4 (यदि CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS गिरी विन्यास विकल्प सक्षम है), और 5. इस फ़ाइल का मान हेक्साडेसिमल में प्रदर्शित होता है। ( डिफ़ॉल्ट मान इस प्रकार 33. के रूप में प्रदर्शित किया जाता है) मेमोरी-मैप किया गया इस तरह के फ्रेम बफर के रूप में मैं/हे पृष्ठों कभी नहीं फेंक दिया जाता है, और आभासी DSO पृष्ठों हमेशा फेंक दिया जाता है coredump_filter मूल्य की परवाह किए बिना,।

...

इस फ़ाइल को केवल यदि गिरी CONFIG_ELF_CORE विन्यास विकल्प के साथ बनाया गया था है।

+0

धन्यवाद। ठीक वही जो मेरे द्वारा खोजा जा रहा था। –

0

मुझे यकीन है कि अगर यह स्मृति का कौन सा हिस्सा डंप करने के लिए सेट किया जा सकता है नहीं कर रहा हूँ।

man 5 core से

डिस्क समाप्ति

एक विकल्प के रूप में के समय में प्रक्रिया की स्मृति की एक छवि वाली फ़ाइल आप एक RLIMIT_CORE पैरामीटर के साथ setrlimit का उपयोग कर मूल फ़ाइल काट-छांट कर सकते हैं।

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