इसका क्या मतलब है?
AU देखें : एक विभाजन दोष क्या है? और यह भी कुछ उदाहरण हैं जो इसे कैसे पुन : पेश करते हैं, इसलिए: विभाजन दोष क्या है? । सबसे सरल विवरण मैं साथ आ सकता हूं (पूर्ण नहीं हो सकता):
कार्यक्रम ने अपने स्वयं के अनुभाग के बाहर एक मेमोरी क्षेत्र तक पहुंचने का प्रयास किया। OS इसे ब्लॉक करता है।
कुछ मामले: आरंभीकृत सूचक के साथ पढ़ना मूल्य, एक सरणी में सीमा से बाहर जाना, फ़ंक्शन कॉल (जब पिछड़े संगतता को बनाए नहीं रखा गया), ...
हालांकि यह हमेशा बड़े कार्यक्रमों या उन लोगों के साथ कारण खोजने में आसान नहीं होता है जो अन्य प्रोजेक्ट लिबास पर रिले करते हैं। और ज्यादातर मामले बग रिपोर्ट के साथ समाप्त होते हैं, या तो लक्ष्य कार्यक्रम के लिए या फिर एक अगर इसकी निर्भरता (या तो अपस्ट्रीम प्रोजेक्ट या डाउनस्ट्रीम वितरण पैकेज)।
मेरे द्वारा इस समस्या का समाधान कैसे किया जा सकता है?
यदि आपने कोई कस्टम कॉन्फ़िगरेशन / सेटअप नहीं किया है और आप सभी अपडेट इंस्टॉल कर चुके हैं। बग रिपोर्ट की रिपोर्ट देखें, मैं बग की रिपोर्ट कैसे करूं?
यदि खुला स्रोत उबंटू उपयोग ubuntu-bug
( apport-bug
) द्वारा समर्थित है । तीसरे पक्ष के बंद स्रोत के लिए, उनके मदद पृष्ठों की जाँच करें कि कैसे बग रिपोर्ट करते हैं और संबंधित डेटा एकत्र करते हैं।
नोट: यदि आपके पास थोड़ी भी प्रोग्रामिंग पृष्ठभूमि है, तो यह अनुशंसा की जाती है कि आप इसे स्वयं हल करने की पूरी कोशिश करें। वहाँ कई बग रिपोर्ट वहाँ साल के लिए निष्क्रिय है। या रिपोर्ट करने से पहले समस्या को हल करने के लिए कम से कम पर्याप्त डिबग डेटा एकत्र करें।
डीबगिंग के लिए कुछ उपयोगी उपकरण
apport-bug
लॉग / कोर डंप / बैकट्रेस
यदि आपके पास विभाजन त्रुटि से पहले त्रुटि संदेश नहीं है। --save
विकल्प के साथ इसे चलाएं और बैक-ट्रेस लॉग देखें:
apport-bug program-cmd --save bug-report_output.txt
gdb
backtrace / डिबगिंग स्रोत कोड
यदि यह काम नहीं करता है, तो उपयोग करें gdb
:
$ gdb program-cmd
(gdb) run
(gdb) backtrace
यदि आपको कोई त्रुटि संदेश मिलता है, तो वेब, लॉन्चपैड और अपस्ट्रीम प्रोजेक्ट बग ट्रैकर की जांच करें यदि कोई समान मामले हैं।
कुछ उन्नत उपयोगकर्ताओं के लिए या जो ac / c ++ सीखने के मार्ग का अनुसरण कर रहे हैं, वे संबंधित -dbg
प्रतीकों पैकेज डाउनलोड कर सकते हैं। फिर आप gdb
स्रोत के माध्यम से प्रोग्राम प्रवाह का पता लगाने के लिए उपयोग कर सकते हैं और सटीक फ़ंक्शन / निर्देश प्राप्त कर सकते हैं जो रनटाइम त्रुटि बढ़ाते हैं।
strace
सिस्टम कॉल ट्रेसिंग
एक और उपकरण जो मदद कर सकता है strace
, मुझे यह पसंद है। यह वास्तव में एक शक्तिशाली उपकरण है।
यह खुद को प्रस्तुत करता है:
सरलतम स्थिति strace
में निर्दिष्ट कमांड तब तक चलती है जब तक कि वह बाहर नहीं निकल जाती। यह सिस्टम कॉल को इंटरसेप्ट करता है और रिकॉर्ड करता है जिसे एक प्रक्रिया द्वारा कॉल किया जाता है और सिग्नल जो एक प्रक्रिया द्वारा प्राप्त किए जाते हैं। प्रत्येक सिस्टम कॉल का नाम, उसके तर्क और उसका रिटर्न मान मानक त्रुटि या -o विकल्प के साथ निर्दिष्ट फ़ाइल पर मुद्रित किया जाता है।
strace
एक उपयोगी नैदानिक, निर्देशात्मक और डीबगिंग टूल है। सिस्टम एडमिनिस्ट्रेटर, डायग्नोस्टिस्ट और परेशानी से निपटने वाले प्रोग्राम के साथ समस्याओं को हल करने के लिए इसे अमूल्य पाएंगे, जिसके लिए स्रोत आसानी से उपलब्ध नहीं है क्योंकि उन्हें ट्रेस करने के लिए उन्हें पुन: उपयोग करने की आवश्यकता नहीं है। छात्रों, हैकरों और अति-उत्सुक लोगों को यह पता चलेगा कि सामान्य कार्यक्रमों को ट्रेस करके एक सिस्टम और उसके सिस्टम कॉल के बारे में बहुत कुछ सीखा जा सकता है। और प्रोग्रामर पाएंगे कि चूंकि सिस्टम कॉल और सिग्नल उपयोगकर्ता / कर्नेल इंटरफ़ेस पर होने वाली घटनाएं हैं, इस सीमा की एक करीबी परीक्षा बग अलगाव, पवित्रता की जाँच और दौड़ की स्थिति पर कब्जा करने के प्रयास के लिए बहुत उपयोगी है।
स्रोत: man strace
ltrace
डायनेमिक लाइब्रेरी कॉल ट्रेसिंग
ltrace
एक प्रोग्राम है जो केवल निर्दिष्ट कमांड चलाता है जब तक कि यह बाहर नहीं निकलता है। यह डायनेमिक लाइब्रेरी कॉल को इंटरसेप्ट और रिकॉर्ड करता है, जिन्हें निष्पादित प्रक्रिया और उस प्रक्रिया द्वारा प्राप्त सिग्नल कहा जाता है। यह प्रोग्राम द्वारा सिस्टम कॉल exeed कट को इंटरसेप्ट और प्रिंट भी कर सकता है।
इसका उपयोग strace
(1) के समान है ।
स्रोत: man ltrace