मैं CoreDump फ़ाइल को कैसे देखूँ?


13

किसी क्रैश से बग की रिपोर्ट करते समय, बग को निजी और CoreDump.gz नामक फ़ाइल बनाया जाता है। बग ट्राइएज प्रलेखन निम्नलिखित कहता है:

यदि क्रैश में अभी भी एक CoreDump.gz लगाव है, तो स्वचालित रूप से पूरी तरह से प्रतीकात्मक स्टैक ट्रेस प्राप्त करना और डुप्लिकेट की जांच करना संभव नहीं था।

Stacktrace.txt एक मानव द्वारा पठनीय लगता है। मैं स्टैक ट्रेस का अर्थ कैसे समझ सकता हूं। CoreDump के साथ CoreDump.gz मानव पठनीय नहीं लगता है। "पूरी तरह से प्रतीकात्मक स्टैक ट्रेस" क्या है? "पूरी तरह से प्रतीकात्मक स्टैक ट्रेस" के बीच अंतर क्या है मैं कोरडंप फ़ाइल की सामग्री को कैसे देख सकता हूं? ('बिल्ली' की कोशिश की, लेकिन यह साफ नहीं है)

जवाबों:


15

Coredump.gz प्रोग्राम क्रैश होने से सुलभ (संकुचित) मेमोरी है। यह एक बाइनरी फ़ाइल है। Coredumps एक ख़ज़ाना है, जिसमें सभी प्रकार के निजी डेटा का खनन किया जाता है।

'Gdb' चलाकर Coredumps को देखा जा सकता है:

gdb --core=mycoredump

बेशक, आपको इस कोर से जुड़े डिबग पैकेज की आवश्यकता होगी।

आप तब, द्वारा एक स्टैकट्रेस उत्पन्न कर सकते हैं:

(gdb) bt

वर्तमान थ्रेड के स्टैकट्रेस उत्पन्न करने के लिए - बिना पैरामीटर रिज़ॉल्यूशन के - या

(gdb) thread apply all bt full

पैरामीटर रिज़ॉल्यूशन के साथ, coredump में सभी थ्रेड्स का स्टैकट्रेस जनरेट करने के लिए।

स्टेक्ट्रेस और फुल स्टैकट्रैक्स एक प्रोग्राम के भीतर कंट्रोल फ्लो दिखाते हैं। पायथन के लिए, स्टैक्ट्रेस का शीर्ष सबसे पुराना कॉल दिखाता है, जिसमें सबसे हाल ही में सबसे नीचे है; बहुत ज्यादा सब कुछ के लिए, शीर्ष सबसे हालिया कॉल है, और सबसे नीचे का सबसे पुराना।

एक पूर्ण स्टैकट्रेस न केवल प्रवाह दिखाएगा, बल्कि पैरामीटर के मूल्यों को भी दिखाएगा। यह वह जगह है जहां हम आमतौर पर निजी डेटा पाते हैं - उदाहरण के लिए, कहते हैं कि आप "पासवर्ड" नामक एक पैरामीटर के साथ "वैलिडेटपासवर्ड" नामक एक फ़ंक्शन देखते हैं, और "मायसेक्रैसपासवर्ड" का मान ...

स्टैकट्रैक आमतौर पर केवल सहायक होते हैं यदि डिबग पैकेज स्थापित किए जाते हैं (ताकि स्टैक फ्रेम को कुछ ऐसी चीजों में हल किया जा सके जो हम आसानी से पढ़ सकते हैं)। स्टैकट्रेस के विश्लेषण के लिए उन स्रोतों की आवश्यकता होगी जो इस विशिष्ट प्रोग्राम उदाहरण को बनाने के लिए उपयोग किए गए थे।


CoreDump एक बाइनरी फ़ाइल है, लेकिन आप इसे कैसे देखते हैं? स्टैकट्रैक्स केवल सहायक होते हैं यदि डिबग पैकेज स्थापित किए जाते हैं, तो एपॉर्ट इसे अन्यथा रिपोर्ट क्यों करता है?
komputes

1
CoreDump फ़ाइल को देखने के लिए नहीं है, इसका उपयोग gdb में डीबगिंग के लिए किया जाना है। आपके पास सॉफ़्टवेयर के एक ही संस्करण (और सभी निर्भरता) को चलाने वाली मशीन होनी चाहिए जो क्रैश उत्पन्न कर रही है और डीबग पैकेज दे रही है, तो आप स्टैक ट्रेस प्राप्त करने के लिए ऊपर दिए गए कार्लोस को क्या उपयोग कर सकते हैं।
कंपित

2
अब के रूप में कैसे यह अभी भी apport के लिए प्रासंगिक है, यह इसलिए है क्योंकि Apport में "रिट्रेकर्स" का एक झुंड है जो आपके coredump को पकड़ता है, DC में एक बॉक्स पर डिबग पैकेज स्थापित करता है और फिर बग को पूर्ण स्टैकट्रैक को बग रिपोर्ट में संलग्न करता है।
कंपित

अतिरिक्त दस्तावेज: gnu.org/software/gdb/documentation
komputes 19

अतिरिक्त दस्तावेज़ीकरण: Unknownroad.com/rtfm/gdbtut/gdbtoc.html
komputes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.