मैं / var / क्रैश से क्रैश फ़ाइल कैसे पढ़ सकता हूं


20

php-fpm हम पर दुर्घटनाग्रस्त हो गई और एक फ़ाइल को अंदर फेंक दिया

/var/crash/_usr_sbin_php5-fpm.1002.crash

उस फ़ाइल में कुछ जानकारी है, लेकिन उसके बाद जो मैं कर रहा हूं वह एक बेस 64 इनकोडेड प्रारूप में कोरडंप नामक अनुभाग में है। मैं कैसे पढ़ सकता हूं जो दुर्घटना के समय चल रहा था?

जवाबों:


18

यदि आप apport-retraceउपकरण के लिए उप-निर्भरता का एक गुच्छा स्थापित नहीं करना चाहते हैं , तो आप अलग-अलग फ़ाइलों में ऐपॉर्ट प्रारूप को अनपैक कर सकते हैं और हमेशा की तरह केवल CoreDumpडंप का उपयोग कर सकते हैं gdb

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (यहाँ tildes पर ध्यान दें!)
  4. bt (आउटपुट वास्तविक बैक-ट्रेस)

    नोट: apport-unpackकभी-कभी अपने आप को अनपैक ऑपरेशन पर क्रैश कर देगा (apport चारों ओर टूटा हुआ लगता है ... xD), लेकिन आपकी CoreDump और अन्य फाइलें वहां मौजूद होंगी, बस इसे अनदेखा /var/crashकरें और अनुमति देने के क्रम में अन्यत्र स्थानांतरित करने के बाद सभी .crash फ़ाइलों को हटा दें। उसी एप्लिकेशन से नई क्रैश रिपोर्ट को आउटपुट करने की प्रणाली।


1
एक आकर्षण की तरह काम किया, apport- रिटर्न स्थापित करने के लिए आवश्यकता के बिना , धन्यवाद!
greuze

1
@digital_infinity नहीं ?! इसे अपने लिए देखें। इको और कैट के बीच एक बड़ा अंतर है ...
स्टैमस्टर

2
@stamster आप सही हैं। क्षमा करें मुझे याद आया कि नाम के साथ एक फ़ाइल है ExecutablePath। मुझे लगा कि पाठक को निष्पादन योग्य मार्ग भरना होगा।
डिजिटल_इनफिनिटी

15

एक उपकरण है जिसे कहा जाता apport-retraceहै .crash फ़ाइलों को पढ़ता है और आपको या तो इसे पूरी तरह से प्रतीकात्मक स्टैक ट्रेस के साथ भरने या gdbकोर डंप का उपयोग करके सत्र चलाने की अनुमति देता है । जीडीबी सत्र शुरू करने के लिए, दौड़ें apport-retrace -g CRASHFILE.crash। ध्यान दें कि एक अच्छा स्टैक ट्रेस प्राप्त करने के लिए आपको -dbg पैकेज स्थापित करने की आवश्यकता है।

यह कहा जा रहा है (मैं PHP पर एक विशेषज्ञ नहीं हूँ), यह वास्तव में कुछ हो सकता है जो आपने अपनी फ़ाइलों में से एक में लिखा था जो दुर्घटना का कारण बन रहा है।


4
Doesn t seem to work: # apport- रिटर्न -g _usr_sbin_php5-fpm.1002.crash ERROR: रिपोर्ट फ़ाइल में आवश्यक फ़ील्ड में से एक नहीं है: CoreDump DistroRelease Package ExecutablePrP` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369

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