2010-06-10 22 views
11

मुझे आगे बताएं कि मैं इस विषय पर इतना अज्ञानी हूं कि मुझे यह भी नहीं पता कि इस प्रश्न का उद्देश्य उत्तर है या नहीं। यदि यह "नहीं" होने पर समाप्त होता है, तो मैं पोस्ट को बंद करने के लिए हटा दूंगा या वोट दूंगा।उत्पादन-केवल त्रुटि को डीबग करने की प्रक्रिया क्या है?

यहां परिदृश्य है: मैंने अभी एक छोटी सी वेब सेवा लिखी है। यह मेरी मशीन पर काम करता है। यह मेरी टीम लीड की मशीन पर काम करता है। जहां तक ​​मैं कह सकता हूं, उत्पादन मशीन को छोड़कर प्रत्येक मशीन पर यह काम करता है। अपवाद पर उत्पादन सर्वर बाहर निकलने का अपवाद किसी तृतीय-पक्ष JAR फ़ाइल से निकलता है, और जानकारी पर स्किम्पी है। मैं घंटों तक वेब पर खोज करता हूं, लेकिन कुछ भी उपयोगी नहीं होता।

तो उत्पादन मशीनों पर होने वाली किसी समस्या को ट्रैक करने की प्रक्रिया क्या है? क्या इसके लिए एक मानक पद्धति, या शायद उपकरण की श्रेणी/परिवार है?

इस प्रश्न को प्रेरित करने वाली त्रुटि को पहले ही तय कर दिया गया है, लेकिन यह डीबगिंग के ठोस दृष्टिकोण की तुलना में अच्छे भाग्य के कारण था। मैं भविष्य में संदर्भ के लिए यह सवाल पूछ रहा हूं।

संपादित करें: प्रवेश:
जवाब यह करने के लिए अब तक एक शब्द द्वारा अभिव्यक्त किया जा रहा है। लॉगिंग के साथ एक मुद्दा यह है कि इसे पूर्व-विचार की आवश्यकता है। क्या होगा यदि खराब लॉगिंग वाले मौजूदा सिस्टम में कोई स्थिति आती है, या ग्राहक संवेदनशील डेटा के बारे में चिंतित है और सिस्टम में व्यापक लॉगिंग सिस्टम नहीं चाहते हैं?

कुछ संबंधित प्रश्न:
Test accounts and products in a production system
Running test on Production Code/Server

उत्तर

6

लॉगिंग के अलावा, जो अमूल्य है, यहां कुछ अन्य तकनीकें हैं और मेरे सहकर्मियों ने वर्षों से उपयोग किया है ... क्लाइंट मशीनों पर 16-बिट विंडो पर वापस जाने के लिए हमारे पास कोई पहुंच नहीं थी। (क्या मैंने खुद को डेट किया था?) अनुमोदित, सब कुछ काम नहीं कर सकता/सकती है।

  • किसी भी और सभी व्यवहार आप देख विश्लेषण करें।
  • यदि संभव हो तो पुन: उत्पन्न करें, इसे पुन: उत्पन्न करें।
  • डेस्क चेक, आपको संदेह कोड के माध्यम से चलना।
  • रबर टीम के सदस्यों और उन लोगों के साथ बतख करता है जिनके पास कोड के साथ बहुत कम या कोई परिचितता नहीं है। जितना अधिक आपको किसी को कुछ समझाना होगा, आपको कुछ उजागर करने का बेहतर मौका होगा।
  • निराश न हों। 5-10 मिनट का ब्रेक लें। इमारत/सड़क/जो भी हो, पर एक त्वरित चलना। उस समय की समस्या के बारे में मत सोचो।
  • अपने सहज ज्ञान को सुनो।
4

यह सबसे कठिन डिबगिंग परिदृश्यों में से एक है। जवाब उत्पादन प्रणाली के विवरण पर निर्भर करेगा। क्या यह एक प्रणाली है जिस पर आपका पूरा नियंत्रण है? या यह क्लाइंट की मशीन में स्थापित है और आपको लॉग फ़ाइल तक पहुंचने या कॉन्फ़िगरेशन पैरामीटर को संशोधित करने के लिए बस कई फोन कॉल प्राप्त करने की आवश्यकता है?

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

0

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

लेकिन सावधान रहें कि लॉगिंग कुछ समझदार निजी डेटा का पर्दाफाश कर सकती है, जिसे एन्कोड किया जाना चाहिए और/या संभव होने पर छोड़ दिया जाना चाहिए।

1

आमतौर पर, "डीबगिंग" [यानी प्रक्रिया को जोड़ने और निष्पादन का निरीक्षण] व्यवहार्य नहीं है - कई कारणों से जिनमें से कम से कम डेटा संवेदनशीलता नहीं है [उदाहरण के लिए डेवलपर्स को हमारे द्वारा उपयोग किए जाने वाले डेटा का निरीक्षण करने के लिए शायद ही कभी योग्यता प्राप्त होती है]

तो यह आमतौर पर माध्यमिक स्रोतों और कलाकृतियों से निष्पादन निष्पादन करने के लिए नीचे आता है। यह तब उबाल जाता है ...

  • लॉगिंग,
  • लॉगिंग,
  • लॉगिंग,

सॉफ्टवेयर की एक बहुत बड़ी तादाद इन दिनों लिखा जावा या नेट शिविरों में से किसी में गिर जाता है, तो लाभ उठाने log4j और log4net क्रमशः।

इसके अलावा एक बुलर-सबूत ओपीएस-केंद्रित कॉन्फ़िगरेशन मार्गदर्शिका और सत्यापन प्रक्रिया में सहायता करता है। याद रखें कि हार्डवेयर और पर्यावरण के लिए जिम्मेदार लोगों को शायद ही वे उन अनुप्रयोगों की कॉन्फ़िगरेशन आवश्यकताओं को समझते हैं जिन्हें वे होस्ट कर रहे हैं।

0

लॉगिंग के साथ, अन्य तकनीकों में बचत अनुरोध डेटा शामिल है जिसे आप बाद में "समान" प्रणाली में खिला सकते हैं। यह बाद में विश्लेषण के लिए फ़ाइल में प्राप्त हर HTTP अनुरोध को सहेजने जितना आसान हो सकता है। अभी आप इस जानकारी में से अधिकतर लॉगिंग कर रहे हैं (विशेष रूप से जीईटी के लिए यूआरएल), आपको केवल हेडर जोड़ने और मिश्रण के लिए निकायों को अनुरोध करने की आवश्यकता है।

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

2

मैं उत्पादन और परीक्षण के बीच अंतर की जांच करने के लिए छोटे, आसान से शुरू करूंगा। अनुमतियाँ, फायरवॉल, विभिन्न संस्करणों, आदि वास्तविक परीक्षण के माध्यम से की तरह स्पष्ट सामान हटा दें। एक बार जब मैं कोनों में कटौती और कहते हैं ओह, कि नहीं यह हो सकता है, यह है।

तब मैं संभावना और लागत से अधिक महंगा परीक्षण को प्राथमिकता। रचनात्मक बनो। वास्तव में अजीब चीजें हैं जो व्यवहार आप देख कारण हो सकता है के बारे में सोचो।

+0

"ऐसा नहीं हो सकता" या "यह असंभव है" लाने के लिए बहुत अच्छा है। हम सभी जानते हैं कि क्या हुआ जब ल्यूक ने इसका उल्लेख किया .... – DevSolo

+1

@ डेवसोलो, "मैं इस दिन के लिए अपना दाहिना हाथ दे दूंगा" –

0

कुछ सलाह:

  • तैयार रहें कि बग कई कारण के कारण हो सकता है, ताकि सिर्फ एक कारण के लिए खोज करने के लिए अपने मन को संकीर्ण नहीं की कोशिश करो।
  • उपयोग बिना क्रिया त्रुटि हैंडलर, जो त्रुटियों और कुल समान दोषों (greylog, ELMAH) पर नज़र रखेंगे।
  • मिनी-डंप फ़ाइलों के साथ पोस्ट-मॉर्टम डीबगिंग पर विचार करें।
  • त्वरित और गंदे दृष्टिकोण के लिए निश्चित समय सीमा तय करें, फिर व्यवस्थित दृष्टिकोण के साथ जाएं।
  • अपने सहयोगियों में से एक के साथ कोड समीक्षा दोषग्रस्त मॉड्यूल का प्रयास करें। ताजा दृश्य सहायक हो सकता है।
  • अपने संस्करण नियंत्रण प्रणाली (जीआईटी, एसवीएन) का उपयोग करके विभाजित करें और जीतें।
  • फिक्स के बारे में सावधान रहें, क्योंकि सभी फिक्स का लगभग 4% परिचय नई बग में समाप्त होता है।
  • उत्पादन में त्वरित फिक्सिंग बग के लिए दबाव न दें ताकि आप अपनी मानक गुणवत्ता नियंत्रण प्रक्रियाओं (जैसे कोड समीक्षा) को छोड़ सकें।
  • फिक्सिंग के बाद सुनिश्चित करें कि आपने कुछ समय बाद बग वापस आने पर स्वचालित परीक्षण लिखे हैं।
संबंधित मुद्दे

 संबंधित मुद्दे