एकत्रित जानकारी या रिपोर्ट बग ट्रैकिंग सिस्टम पर अपलोड हो जाती है।
यदि सिस्टम में कोई भी प्रक्रिया एक सिग्नल के कारण मर जाती है जिसे आमतौर पर 'क्रैश' (विभाजन उल्लंघन, बस त्रुटि, फ़्लोटिंग पॉइंट अपवाद इत्यादि) के रूप में संदर्भित किया जाता है, या उदाहरण के लिए एक पैकेज्ड पायथन एप्लिकेशन एक बिना अपवाद के अपवाद को उठाता है स्वचालित रूप से है।
यह / var / क्रैश / (फ़ाइल नाम क्रैश किए गए निष्पादन योग्य और उपयोगकर्ता आईडी के नाम से बना है) में एक फ़ाइल में प्रारंभिक क्रैश रिपोर्ट का उत्पादन करता है। यदि क्रैश की गई प्रक्रिया उस उपयोगकर्ता की है, जो वर्तमान में लॉग इन है, या यह एक सिस्टम प्रक्रिया से संबंधित है और उपयोगकर्ता एक व्यवस्थापक है, तो एपॉर्ट उपयोगकर्ता को दुर्घटना के बारे में सूचित करता है और समस्या की रिपोर्ट करने की पेशकश करता है।
यदि उपयोगकर्ता "त्रुटि रिपोर्ट भेजें" चेकबॉक्स सक्षम करता है, तो Apport बग ट्रैकिंग सिस्टम में एकत्रित जानकारी अपलोड करता है। इसके बाद यह एक समझदार डिफ़ॉल्ट बग शीर्षक के साथ संकुल बग फाइल को खोलता है और वेब यूआई में बग फाइलिंग प्रक्रिया को छोड़ देता है।
उबंटू हमारे बग ट्रैकिंग सिस्टम के माध्यम से हर दिन बग की अविश्वसनीय रूप से बड़ी संख्या में रिपोर्ट प्राप्त करता है। इनमें से प्रत्येक को पढ़ने, मूल्यांकन और क्रमबद्ध करने की आवश्यकता है ताकि इसे ठीक किया जा सके। यह वह जगह है जहाँ हम आपकी सहायता का उपयोग मददगार कीड़े के साथ कर सकते हैं। बग ट्राइएज प्रक्रिया के दृश्य प्रतिनिधित्व के लिए, ये अच्छा फ्लो चार्ट देखें।
हर बग रिपोर्ट रिपोर्टर से बातचीत है। किसी भी रिपोर्टर का आमतौर पर उबंटू समुदाय के साथ पहला संपर्क बग विजयर के माध्यम से होता है, जो पूरी बग रिपोर्ट एक साथ रखने की कोशिश करता है। यह बहुत महत्वपूर्ण है कि हम एक अच्छी धारणा दें, इसलिए कृपया विनम्र रहें और अपनी सर्वश्रेष्ठ अंग्रेजी का उपयोग करने का प्रयास करें।
सरल, अनट्रेंड बग्स पर काम करना शुरू करने और ट्राइजिंग प्रक्रिया से परिचित होने का एक अच्छा तरीका है क्योंकि आपको बग के जीवन चक्र के हर पहलू से निपटना होगा। खंड अनट्रेंड बग बताते हैं कि उन्हें कहां खोजना है।
बग प्रकार
आशंका रिपोर्ट
Apport रिपोर्ट स्वचालित बग रिपोर्टिंग प्रोग्राम Apport के माध्यम से रिपोर्ट किए गए बग हैं। Apport का उपयोग करने वाले बग्स की रिपोर्टिंग बग की रिपोर्टिंग का पसंदीदा तरीका है क्योंकि यह डेवलपर्स को प्रभावित सिस्टम के बारे में बहुत सारी जानकारी देता है। जब Apport का उपयोग किया जाता है, तो पूरी प्रक्रिया को कम करने के लिए कम अतिरिक्त जानकारी की आवश्यकता होती है।
आप सिस्टम ब्योरे की सूची में उनके विवरण में इन बगों को पहचान सकते हैं। बग को रिपोर्ट करते समय कुछ कार्यक्रमों में एपॉर्ट के लिए हुक होते हैं, अधिक जानकारी जोड़ते हैं। यह जानकारी आमतौर पर अनुलग्नकों में पाई जा सकती है।
पुष्ट कीड़े
जब एक बग को 'पुष्टि' के रूप में चिह्नित किया जाता है, तो यह अभी तक पूरी तरह से नहीं है। यह बग 'ट्राइज्ड' के रूप में चिह्नित होने के बहुत करीब है, लेकिन आपको यह सुनिश्चित करने की आवश्यकता है कि यह डेवलपर्स को ठीक करने के लिए तैयार है।
सुविधा का अनुरोध
यदि बग रिपोर्ट वास्तव में एक सुविधा अनुरोध है, तो दो संभावनाएं हैं। यदि अनुरोधित एन्हांसमेंट छोटा है और अच्छी तरह से परिभाषित है और / या सुझाव एक अपस्ट्रीम प्रोजेक्ट की चिंता करता है, तो बग का महत्व 'विशलिस्ट' पर सेट किया जाना चाहिए। जब रिपोर्ट पूरी हो जाती है तो स्थिति को 'ट्राइएड' पर सेट किया जाना चाहिए।
केवल उबंटू बग कंट्रोल टीम के सदस्य ही ऐसा कर सकते हैं। यदि आप सदस्य नहीं हैं, तो आपको किसी ऐसे व्यक्ति से पूछना होगा जो आपके लिए यह करना है। # Ubuntu-बगों में बग नंबर पेस्ट करें और कहें कि आपको लगता है कि बग को 'विशलिस्ट' पर सेट किया जाना चाहिए। कोई आपको नोटिस करेगा और आपके लिए सेट करेगा, हालांकि जरूरी नहीं कि तुरंत।
यह आंतरिक रूप से कैसे काम करता है?
क्रैश इंटरसेप्शन
Apport का उपयोग करता है / proc / sys / कर्नेल / core_pattern सीधे एपर्ट में कोर डंप को पाइप करने के लिए:
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$
नोट: कि भले ही ulimit अक्षम कोर फ़ाइलों के लिए सेट किया गया हो (ulimit -c 0 का उपयोग करके शून्य की एक कोर फ़ाइल का आकार निर्दिष्ट करके), फिर भी एप्रोर्ट क्रैश को पकड़ लेगा। पाइथन क्रैश को रोकने के लिए यह /etc/python*/sitecustomize.py
बिना किसी अपवाद के एपर्ट को कॉल करने के लिए इंस्टॉल करता है।
उदाहरण
यदि पीआईडी 1 (अपस्टार्ट) की मृत्यु हो जाती है, तो एप्रोइट भी मुख्य फ़ाइलों को कैप्चर करने में सक्षम है:
- यदि अपस्टार्ट एक आंतरिक असंगतता का पता लगाता है, तो यह SIGABRT सिग्नल को बढ़ाता है।
- अपस्टार्ट क्रैश हैंडलर को SIGABRT कहा जाता है।
- अपस्टार्ट क्रैश हैंडलर एक बच्चे की प्रक्रिया की तलाश करता है।
- अपस्टार्ट चाइल्ड प्रोसेस सिग्नल को फिर से उठाता है जिसके परिणामस्वरूप बच्चा असामान्य रूप से बाहर निकल जाता है।
- कर्नेल पता लगाता है कि बच्चे की प्रक्रिया असामान्य रूप से बाहर निकल गई है और एपर्ट को कॉल करती है, कोर फाइल को एपर्चर मानक इनपुट (/ proc / sys / कर्नेल / core_pattern के कारण) को पाइप करती है।
- apport डिस्क / var / क्रैश / में डिस्क के लिए मुख्य फ़ाइल लिखता है।
- PID 1 अपने बच्चे के समाप्त होने का इंतजार करता है (जो कि केवल एक बार होता है जब ऐपर्ट कोर फाइल लिखना समाप्त कर देता है)।
- PID 1 बाहर निकलता है।
- गिरी पान।
- अगले बूट पर, व्हाट्सएप क्रैश फाइल का पता लगाएगा और इसे प्रोसेस करेगा।
बैकएंड
देरी और सीपीयू / आईओ प्रभाव को यथासंभव कम रखने के लिए, /usr/share/apport/apport
केवल डेटा एकत्र करता है जिसे प्राप्त करना होता है जबकि दुर्घटनाग्रस्त प्रक्रिया अभी भी मौजूद है: /proc/pid
कोर डंप, निष्पादन योग्य पथ और संकेत संख्या से जानकारी। को रिपोर्ट लिखी जाती है /var/crash/executable_path.uid.crash
।
सीमांत आह्वान
ग्नोम में, अपडेट-नोटिफ़ायर एक इनोटिफ़ वॉच ऑन रखता है /var/crash
। जब भी कुछ नया होता है, तो वह कॉल करता है / usr / share / apport / apport-checkreports। यदि कोई नई रिपोर्ट है, तो यह कॉल करता है / usr / share / apport / apport-gtk, जो ऊपर दिए गए स्क्रीनशॉट में दिखाया गया है।
फ्रंटएंड तब अतिरिक्त जानकारी इकट्ठा करता है जैसे पैकेज संस्करण, पैकेज फ़ाइल चेकसम या ओएस संस्करण, और सभी मिलान पैकेज हुक कहते हैं। इसे अक्षम करने के लिए, आप gsettings सेट com.ubuntu.update-नोटिफ़ायर शो-ऐपॉर्ट-क्रैश को झूठा (आपके साधारण डेस्कटॉप उपयोगकर्ता के रूप में) चला सकते हैं।
लॉन्चपैड-आधारित ऑटो-रिट्रैसर
कैनोनिकल डेटा सेंटर एक सेवा चलाता है जो स्वचालित रूप से ऐपर्ट के साथ बगों को दोहराता है। लॉन्चपैड में आर्किटेक्चर के अनुसार बग्स को टैग करके, एक रिटर्न किया जाएगा और टैग हटा दिया जाएगा। जिन टैगों का उपयोग किया जाता है, वे हैं- i386- रिटर्न या जरूरत- amd64- रिटर्न। घोषणा देखें।
प्रति-पैकेज Apport हुक
संकुल के लिए यह संभव है कि सिस्टम से एकत्रित जानकारी को निर्दिष्ट करे और बग रिपोर्ट में शामिल किया जाए। ये पैकेज में निहित एपॉर्ट हुक द्वारा किए जाते हैं। कुछ उपयोगी उदाहरणों के लिए देखें:
- source_xorg.py - बग रिपोर्ट में अतिरिक्त लॉग फ़ाइल और हार्डवेयर विवरण जोड़ता है
- usplash - विशिष्ट कोड पथों में क्रैश को अनदेखा करता है
- source_totem.py - रिपोर्टर से सवाल पूछता है और प्रतिक्रियाओं के आधार पर अलग-अलग जानकारी इकट्ठा करता है
in / usr / share / apport / पैकेज-हुक। Apport हुक प्रदान करने वाले पैकेजों की एक सूची भी है।
यदि क्रैश या बग रिपोर्ट एपॉर्ट के माध्यम से प्रस्तुत की जाती है, तो संबंधित हुक स्वचालित रूप से चलाए जाएंगे। यदि आपके पास पहले से ही रिपोर्ट की गई बग है, जो बिना एपर्ट के दायर की गई थी, और आप उन हुक से जानकारी में रुचि रखते हैं, तो आप बग रिपोर्टर को एपॉर्ट-कलेक्ट बगनंबर का उपयोग करने के लिए कह सकते हैं।
स्रोत का उपयोग करें, ल्यूक!
- आप लॉन्चपैड प्रोजेक्ट पेज से अपस्ट्रीम टारबॉल को डाउनलोड कर सकते हैं, या उबंटू संग्रह से उबंटू स्रोत टारबॉल को डाउनलोड कर सकते हैं।
- लॉन्चरपैड पर बाजार आरसीएस के साथ एपॉर्ट विकसित किया गया है। यदि आप इसमें योगदान देना चाहते हैं या इसके आधार पर अपनी खुद की प्रणाली विकसित करना चाहते हैं, तो आप अपनी खुद की शाखा bzr get lp के साथ प्राप्त कर सकते हैं: उबंटू पैकेजिंग शाखा के लिए ट्रंक, या डीस्कैचआउट-ए एपॉर्ट।
भविष्य की योजनाएं
प्रदर्शन में विभिन्न सुधार, रिपोर्ट के साथ काम करने के लिए बेहतर उपकरण, और अधिक भाषाओं के एकीकरण (मोनो / पायथन स्टैक निशान, अभिकथन संदेश, आदि) संबंधित विनिर्देश देखें।
स्रोत: Apport , How To Triage , और Apport इनेबल कैसे करें