जब आउटपुट में त्रुटि के बिना कोई एप्लिकेशन क्रैश होता है, तो क्या कोई लॉग है जो मैं जांच सकता हूं?


18

कभी-कभी ऐसा होता है कि कुछ एप्लिकेशन क्रैश बिना आउटपुट त्रुटि ( मेरे मामले में शंकु , शायद मेरे कॉन्फ़िगरेशन में से एक है जो गलत है)।

क्या कहीं एक त्रुटि लॉग है जिसे मैं यह समझने के लिए जांच सकता हूं कि यह दुर्घटनाग्रस्त क्यों है?

जवाबों:


14

आवेदन पर निर्भर करता है। विभिन्न अनुप्रयोगों में विभिन्न लॉगिंग सिस्टम हैं; कोई भी केंद्रीय लॉग नहीं है जिसमें आपके सिस्टम पर चलने वाले सभी कार्यक्रमों से सभी आउटपुट हैं।

कहा जा रहा है, बहुत सारे प्रोग्राम अपनी लॉग फाइल को डायरेक्टरी में रखते हैं /var/log। फ़ाइल /var/log/syslog(या हो सकता है /var/log/messages), विशेष रूप से, "सिस्टम लकड़हारा" से आउटपुट होता है, जो कि सिस्टम द्वारा उपलब्ध कराई गई सेवा है जिसे प्रोग्राम लॉगिंग के लिए उपयोग कर सकते हैं (यदि वे चुनते हैं)। लेकिन सभी प्रोग्राम इसका उपयोग नहीं करते हैं। अधिकतर, आपको उस फ़ाइल में निम्न-स्तरीय सिस्टम सेवाओं से संदेश मिलेंगे, न कि ग्राफ़िकल एप्लिकेशन जो आप आमतौर पर उपयोग करते हैं।

आप मानक लॉग फ़ाइलों के स्थानों के बारे में अधिक पढ़ना चाह सकते हैं ।


6

क्रैश फाइलें /var/log/crashes/बग की रिपोर्ट करने के लिए ऐपॉर्ट के उपयोग के लिए जाती हैं। आप के साथ एक कोर डंप निकाल सकते हैं apport-unpack, उस कोर डंप को gdb के माध्यम से डाल सकते हैं, और पता लगा सकते हैं कि प्रोग्राम को क्रैश करने का कारण क्या है।

यह सब आप एक प्रोग्रामर मान रहे हैं। यदि आप नहीं हैं ... ठीक है, आप वैसे भी दुर्घटना को ठीक नहीं कर सकते हैं!


1
"यह सब आप एक प्रोग्रामर मान रहे हैं। यदि आप ... ठीक नहीं हैं, तो आप वैसे भी दुर्घटना को ठीक नहीं कर सकते हैं!" ओपन-सोर्स के साथ हम सभी अपनी समस्याओं को हल करने की कोशिश कर सकते हैं, अपने स्वयं के जोखिम पर स्पष्ट रूप से;)
स्ट्रे

@ डैनियल: सच में नहीं! यदि आप एक प्रोग्रामर नहीं हैं और आपके पास एप्लिकेशन कोड की अच्छी समझ नहीं है, तो आप जिस कोड को बगियर के साथ गड़बड़ करते हैं, वह संभवतः मिल जाएगा :)
एंटोनियोकेएससी

1
यहां तक ​​कि अगर आप एक प्रोग्रामर नहीं हैं, तो कभी-कभी कोर डंप देखने से आपको समस्या के बारे में पता चल सकता है। उदाहरण के लिए, ऐसा लगता है कि यह किसी तरह के ग्राफिक्स रूटीन में दुर्घटनाग्रस्त हो रहा है - शायद मुझे अपने डिस्प्ले ड्राइवर को अपडेट करना चाहिए ...
15:12 पर user1242

2
..और यह बग रिपोर्ट / मंचों में त्रुटियों का वर्णन करने में मदद करता है;)
स्ट्रेट

1
क्या आप गैर-प्रोग्रामर जानते हैं जो gdb का उपयोग कर सकते हैं? मैं एक प्रोग्रामर हूं और जहां तक bt full"ओह एक बैकट्रेस ... लापता प्रतीकों के साथ मिल सकता है ... लगता है कि मुझे डिबग प्रतीकों को स्थापित करने और क्रैश को पुन: उत्पन्न करने की कोशिश करने की आवश्यकता है ..." मुझे एक बार पता चला कि कैसे सेट करना है breakpoint ... यह सबसे उन्नत है, हालांकि मैं इसके साथ मिल गया हूं।
maco

3

शंकु के लिए यह भी हो सकता है कि इसमें प्रविष्टियाँ हों $HOME/.xsession-errors


2

कुछ अनुप्रयोगों में झंडे होते हैं जिनका उपयोग डिबगिंग को चालू करने के लिए किया जा सकता है, जैसे -d, -D, -debug, आदि एप्लिकेशन के मैन पेज की जाँच करें ( man [my-app]) -h ध्वज के साथ एप्लिकेशन को चलाएं यह देखने के लिए कि क्या ऐसा है विकल्प।

कई GUI ऐप $ HOME / .xsession-त्रुटियों में लिखते हैं ताकि आउटपुट की जाँच करने के लिए यह एक अच्छी जगह हो।

अच्छा डिबग जानकारी प्राप्त करने के लिए मैको का यह अधिकार कि आशंका शायद सबसे निश्चित है। कभी-कभी यह दुर्घटना पर कब्जा नहीं करता है, हालांकि।

यदि अन्य सभी विफल रहता है, तो आप एप्लिकेशन को gdb में चलाकर जानकारी को इससे बाहर कर सकते हैं। यह कुछ इस तरह होगा:

$ gdb my-app

(gdb) run

... इसे दुर्घटनाग्रस्त करने के लिए जो कुछ भी आवश्यक है वह करें ...

(gdb) bt full

और वहां से जाओ।

यदि आप gdb रूट पर जाते हैं, तो आप पहले ही बताए गए प्रतीकों को स्थापित करना चाहते हैं। सलाह लेने के लिए https://wiki.ubuntu.com/DebuggingProgramCrash देखें ।


मेरे लिए सबसे अच्छा जवाब बिना किसी संदेह के
क्लॉडिक्स

1

आप /var/log/messages or crashesतब जा सकते हैं, आप grepउन पर कमांड चला सकते हैं और उस एप्लिकेशन को खोज सकते हैं जो आपकी फाइलों की तलाश में कभी-कभी बहुत बड़ा हो सकता है। यह आपके एप्लिकेशनटोन के लिए प्रासंगिक जानकारी लौटाएगा। :)


1

यदि आप एक .desktop लॉन्चर फ़ाइल से अपना एप्लिकेशन लॉन्च कर रहे हैं, तो Terminal=trueअपनी .desktop फ़ाइल में विकल्प जोड़ें । जब आप प्रोग्राम चलाते हैं, तो यह एक टर्मिनल खोलेगा, टर्मिनल पर आउटपुट उसी तरह होगा जैसा आप देखेंगे अगर आपने प्रोग्राम को पहली पंक्ति में कमांड लाइन के माध्यम से चलाया था। इस तरह, जब GUI क्रैश या लटका हुआ है, तो आप देख सकते हैं कि कौन सा पाठ आउटपुट इसके लिए अग्रणी था।


यह क्या करता है? मेरे पास पहले से ही यह सेट है और यह कुछ भी अतिरिक्त नहीं कर रहा है।
मैट

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