आपने भेज दिया है, आपको एक दुर्लभ सेग फॉल्ट मिलता है। सूचक की जाँच करें या इसे जाने दें?


9

आपने भेज दिया है, एस्कॉर्ट्स को बंद कर दिया गया है, आपको एक दुर्लभ दुर्घटना रिपोर्ट प्राप्त होती है जो संकेत देती है कि आपके कोड में एक शून्य सूचक उल्लंघन हुआ है। एक विकास के माहौल में, समस्या एक मुखर द्वारा पकड़ा गया होगा।

आपके पास एक दुर्घटना रिपोर्ट है, इसलिए समस्या को पुन: प्रस्तुत करना असंभव है। बैकट्रेस के बाद कोई सुराग नहीं देता है कि दुर्घटना पहले स्थान पर क्यों हुई।

विकल्प: - दुर्घटना को रोकने के लिए पॉइंटर चेकिंग जोड़ें। यह दुर्घटना को रोकेगा, लेकिन आप शायद यह भी नहीं जान पाएंगे कि यह पहली बार में क्यों हुआ। - इसे उड़ने दो, आशा है कि यह फिर से एक परिदृश्य के साथ होता है

मान लीजिए कि एप्लिकेशन एक निर्देशित मिसाइल या स्वचालित ब्रेकिंग सिस्टम के लिए अभिप्रेत नहीं है ...

तुम किसे चुनोगे?


जब तक यह पुष्ट नहीं है, तब तक स्टैक ओवरफ्लो साइट पर संबंधित कोड फ़ाइलों (शायद Pastebin.com पर) के साथ क्रैश रिपोर्ट पोस्ट करना आसान हो सकता है यदि आप इसे हल करना चाहते हैं ...
तमारा विजसमैन

2
@ टॉमीज: ऐसा मत सोचो..यह शायद "बहुत स्थानीय" के रूप में बंद हो जाएगा
नवीन

@ नवीन: हो सकता है ... मैं नियमित एसओ आगंतुक नहीं हूं इसलिए यह एक एसयू-माइंड टिप्पणी थी।
तमारा विज्समैन

1
@ नवीन: बहुत अधिक स्थानीयकरण का मतलब बहुत अधिक क्षेत्रीय है, यह भूगोल के बारे में है और मुद्दे की विशेषज्ञता के बारे में नहीं है। लेकिन यह सवाल शायद एसओ द्वारा विषयवस्तु पर बंद किया जाएगा।
मानियरो

जवाबों:


7

मैंने दूसरा तरीका चुना। क्रैश को छिपाने का कोई मतलब नहीं है अगर NULL पॉइंटर उस बिंदु पर अनपेक्षित था जहां क्रैश हुआ है। ज्यादातर मामलों में यह NULL पॉइंटर कुछ और गलत होने के लक्षणों में से एक होगा। अगर हम इसे NULL पॉइंटर चेक से छिपाते हैं तो यह लगभग तय है कि कुछ और टूट जाएगा। मुझे लगता है कि आपके पास परिदृश्य को पकड़ने का एक बेहतर मौका है यदि आप उस बिंदु को जानते हैं जहां यह कुछ यादृच्छिक स्थान पर हर बार क्रैश होता है।


1
मैं खुद इस राय की ओर झुक रहा हूं। उपयोगकर्ता की धारणा मुझे चिंतित करती है। एक दुर्घटना स्पष्ट रूप से लग रहा है जैसे कुछ गलत हो गया है। हालाँकि, यदि किसी फीचर की गणना पूरी तरह से गलत है, तो इस पर भी ध्यान दिया जाएगा।
एमएम ०१

2
मेरी राय में, भले ही उपयोगकर्ता कभी-कभार दुर्घटना से परेशान हो सकता है, लेकिन अगर यह किसी का ध्यान नहीं जाता है तो यह गलत परिणाम देगा।
नवीन

जितनी जल्दी हो सके दुर्घटना, यह आपको समस्या का पता लगाने में मदद करता है, और यह उपयोगकर्ता को कम डेटा को कम करने में मदद करता है
स्पड 86

मैं यह भी पता लगाने के लिए कि मैं क्या गलत कर रहा हूँ (या कम से कम मैं कोशिश करूँगा, किसी भी मामले में यह आपको ठीक करना चाहिए कुछ मुद्दे मिल सकता है) का उपयोग करता हूं। मैं पहले NULL पॉइंटर को पकड़ने की कोशिश करने के लिए अतिरिक्त दावे जोड़ूंगा उपयोगकर्ता से पूछें कि एक निर्माण को चलाने की कोशिश करें, जो थोड़ी देर के लिए चालू हो गया है यह देखने के लिए कि क्या वे इसे पहले दुर्घटनाग्रस्त कर सकते हैं
स्पूडी 86

3
  1. दुर्घटना कितनी बार होती है? यह कुछ अस्पष्ट मामलों में कई ग्राहकों में से एक के लिए होता है? परिणाम (डेटा हानि, सिस्टम क्रैश) क्या हैं? यदि यह हर 1 मिलियन मामलों में होता है और उन्हें बस एप्लिकेशन को पुनरारंभ करना पड़ता है और कोई डेटा नहीं खोता है, तो शायद आपको इसे ठीक करने की आवश्यकता नहीं है - इसे इस तरह छोड़ दें।

  2. कितना महँगा (पैसा और समय) है कि सभी ग्राहकों को जोड़ दें और इसे शिप करें (यदि ग्राहकों का सिर्फ एक हिस्सा नया संस्करण प्राप्त करता है, तो बाकी की जाँच नहीं की जा सकती है)? समस्या खोजने की संभावना क्या है? यदि आप त्रुटि को पकड़ने की उम्मीद करते हुए कोड में रैंडम चेक लगाते हैं तो यह एक बुरा अभ्यास है ...

  3. क्या समस्या को ग्राहक की मशीन पर पुन: प्रस्तुत किया जा सकता है? क्या आप उस मशीन तक पहुँच सकते हैं? यह वास्तव में मूल्यवान हो सकता है

  4. अपनी क्रैश रिपोर्ट की समीक्षा करें और सुनिश्चित करें कि दी गई जानकारी उपयोगी है और समस्या का निदान करने में आपकी सहायता कर सकती है


2

एक विकास के माहौल में, समस्या एक मुखर द्वारा पकड़ा गया होगा।

एक विशिष्ट क्रम में यह पकड़ा और तय किया गया होगा, लेकिन वर्तमान बैक-ट्रेस कभी नहीं पकड़ा गया है।
आपको यह देखने में सक्षम होना चाहिए कि क्रैश डंप में क्या गड़बड़ी हुई है, क्या आपने मापदंडों की जांच की है, आदि ...?

जो अतिरिक्त समय आप इसे लगाना चाहते हैं, उसके आधार पर किया जा सकता है:

  • क्रैश डंप को
    पुरा करें और इसे जिस लाइन पर क्रैश किया गया था उस पर टिप्पणी के साथ कोड में देखें , इससे एक व्यक्ति को यह जानने के लिए कि यह पहले हुआ है, यह जानने के लिए एक बहुत ही समान कचरा डंप की जांच करने की अनुमति देता है
    [समय व्यतीत: लघु]

  • अतिरिक्त जांच, लॉगिंग, ... आप इसे रोकना चाहते हैं और अगली बार अधिक जानकारी प्राप्त करना चाहते हैं।
    [समय बिताया: मध्यम]

    आपके कोड में नल पॉइंटर उल्लंघन हुआ।

  • जांचें कि इस उल्लंघन के लिए एप्लिकेशन को इस तरह से कॉल करना असंभव है।
    [समय व्यतीत: लंबा]


1
यह पोस्ट समस्या को हल करने के दृष्टिकोण के बारे में बहुत अधिक नहीं है, बल्कि एक काल्पनिक स्थिति में कार्रवाई का कोर्स है (अर्थात आवंटित समय सीमा में, समस्या के स्रोत को कम नहीं किया जा सकता है)।
MM01

2

इन दिनों, मैं जहाज पर चढ़कर () चालू हुआ। इसकी बहुत अधिक लागत नहीं है और यह शत्रुतापूर्ण परिस्थितियों में जीवन को बहुत आसान बना सकता है (यानी, आपके ग्राहक का वातावरण अक्सर आपके देव या क्यूए वातावरण से अधिक शत्रुतापूर्ण होता है)।

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