ट्रेसिंग (सॉफ्टवेयर): Difference between revisions

From Vigyanwiki
No edit summary
Line 1: Line 1:
{{Software development process}}
{{Software development process}}
[[सॉफ्टवेयर इंजीनियरिंग]] में, '''ट्रेसिंग''' में प्रोग्राम के क्रियान्वयन के बारे में जानकारी रिकॉर्ड करने के लिए [[कंप्यूटर डेटा लॉगिंग|लॉगिंग]] का एक विशेष उपयोग सम्मिलित होता है। यह जानकारी विशिष्ट रूप से [[प्रोग्रामर]] द्वारा [[डिबगिंग|दोषमार्जन]] उद्देश्यों के लिए उपयोग की जाती है, और इसके अतिरिक्त, ड्राफ़्ट लॉग में सम्मिलित जानकारी के प्रकार और विवरण के आधार पर, अभ्यस्त [[प्रणाली व्यवस्थापकों|प्रणाली प्रशासकों]] या [[तकनीकी सहायता]] स्टाफ़ द्वारा और सॉफ़्टवेयर जांच साधनो द्वारा सामान्य समस्याओं का [[निदान]] करने के लिए उपयोग किया जाता है। सॉफ़्टवेयर।<ref>{{Cite web|url=http://ltt.polymtl.ca/tracingwiki/index.php/TracingBook|title=The Tracing Book|last=|first=|date=|website=|url-status=live|archive-url=https://web.archive.org/web/20090224184220/http://ltt.polymtl.ca/tracingwiki/index.php/TracingBook|archive-date=2009-02-24|access-date=}}</ref> ट्रेसिंग एक [[क्रॉस-कटिंग चिंता|क्रॉस-कटिंग फर्म]] है।
[[सॉफ्टवेयर इंजीनियरिंग]] में, अनुरेखणमें प्रोग्राम के क्रियान्वयन के बारे में जानकारी रिकॉर्ड करने के लिए [[कंप्यूटर डेटा लॉगिंग|लॉगिंग]] का एक विशेष उपयोग सम्मिलित होता है। यह जानकारी विशिष्ट रूप से [[प्रोग्रामर]] द्वारा [[डिबगिंग|दोषमार्जन]] उद्देश्यों के लिए उपयोग की जाती है, और इसके अतिरिक्त, ड्राफ़्ट लॉग में सम्मिलित जानकारी के प्रकार और विवरण के आधार पर, अभ्यस्त [[प्रणाली व्यवस्थापकों|प्रणाली प्रशासकों]] या [[तकनीकी सहायता]] स्टाफ़ द्वारा और सॉफ़्टवेयर जांच साधनो द्वारा सामान्य समस्याओं का [[निदान]] करने के लिए उपयोग किया जाता है। सॉफ़्टवेयर।<ref>{{Cite web|url=http://ltt.polymtl.ca/tracingwiki/index.php/TracingBook|title=The Tracing Book|last=|first=|date=|website=|url-status=live|archive-url=https://web.archive.org/web/20090224184220/http://ltt.polymtl.ca/tracingwiki/index.php/TracingBook|archive-date=2009-02-24|access-date=}}</ref> अनुरेखणएक [[क्रॉस-कटिंग चिंता|क्रॉस-कटिंग फर्म]] है।


''ट्रेसिंग'' और लॉगिंग के अन्य रूपों के बीच निरन्तर एक स्पष्ट अंतर नहीं होता है, अतिरिक्त इसके कि ट्रेसिंग शब्द लगभग कभी भी लॉगिंग पर लागू नहीं होता है जो प्रोग्राम की एक [[कार्यात्मक आवश्यकता]] है (इसलिए किसी बाहरी स्रोत से डेटा के लॉगिंग को छोड़कर, जैसे  [[उच्च-ऊर्जा भौतिकी]] प्रयोग में [[डेटा संकलन]] ,और [[राइट-फॉरवर्ड लॉगिंग]])। लॉग जो रिकॉर्ड प्रोग्राम उपयोग (जैसे [[सर्वर लॉग]]) या ऑपरेटिंग-सिस्टम स्थिति मुख्य रूप से एक प्रणाली प्रशासक (उदाहरण के लिए [[घटना दर्शी|स्थिति]] देखें) के लिए एक पारिभाषिक रूप में प्राचीन क्षेत्र में आते हैं।
अनुरेखणऔर लॉगिंग के अन्य रूपों के बीच निरन्तर एक स्पष्ट अंतर नहीं होता है, अतिरिक्त इसके कि अनुरेखणशब्द लगभग कभी भी लॉगिंग पर लागू नहीं होता है जो प्रोग्राम की एक [[कार्यात्मक आवश्यकता]] है (इसलिए किसी बाहरी स्रोत से डेटा के लॉगिंग को छोड़कर, जैसे  [[उच्च-ऊर्जा भौतिकी]] प्रयोग में [[डेटा संकलन]] ,और [[राइट-फॉरवर्ड लॉगिंग]])। लॉग जो रिकॉर्ड प्रोग्राम उपयोग (जैसे [[सर्वर लॉग]]) या ऑपरेटिंग-सिस्टम इवेंट मुख्य रूप से एक प्रणाली प्रशासक (उदाहरण के लिए इवेंट देखें) के लिए एक पारिभाषिक रूप में प्राचीन क्षेत्र में आते हैं।


यह आलेख मुख्य रूप से दोषमार्जन या नैदानिक ​​उद्देश्यों के लिए ट्रेसिंग से संबंधित है।
यह आलेख मुख्य रूप से दोषमार्जन या नैदानिक ​​उद्देश्यों के लिए अनुरेखणसे संबंधित है।


== स्थिति लॉगिंग बनाम ट्रेसिंग ==
== इवेंट लॉगिंग बनाम ट्रेसिंग ==


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! स्थिति लॉगिंग !! सॉफ्टवेयर ट्रेसिंग
! इवेंट लॉगिंग !! सॉफ्टवेयर ट्रेसिंग
|-
|-
| मुख्य रूप से प्रणाली प्रशासकों द्वारा प्रयुक्त किया जाता है
| मुख्य रूप से प्रणाली प्रशासकों द्वारा प्रयुक्त किया जाता है
Line 20: Line 20:
| लॉग "निम्न-स्तर" जानकारी (उदाहरण के लिए एक अपवाद मुक्त )
| लॉग "निम्न-स्तर" जानकारी (उदाहरण के लिए एक अपवाद मुक्त )
|-
|-
| बहुत अधिक "सशब्द" नहीं होना चाहिए (इसमें कई प्रतिरूप स्थिति या जानकारी सम्मिलित है जो इसके उद्दिष्ट दर्शकों के लिए सहायक नहीं है)
| बहुत अधिक "सशब्द" नहीं होना चाहिए (इसमें कई प्रतिरूप इवेंट या जानकारी सम्मिलित है जो इसके उद्दिष्ट दर्शकों के लिए सहायक नहीं है)
| सशब्द हो सकता है
| सशब्द हो सकता है
|-
|-
Line 26: Line 26:
|निर्गम प्रारूप पर कुछ सीमाएँ
|निर्गम प्रारूप पर कुछ सीमाएँ
|-
|-
|स्थिति लॉग संदेश अक्सर स्थानीयकृत होते हैं
|इवेंट लॉग संदेश अक्सर स्थानीयकृत होते हैं
|स्थानीयकरण शायद ही कभी फर्म का विषय है
|स्थानीयकरण शायद ही कभी फर्म का विषय है
|-
|-
|नई प्रकार की स्थिति, साथ ही साथ नई स्थिति संदेशों को सम्मिलित करने के लिए तेज़ होने की आवश्यकता नहीं है
|नई प्रकार की स्थिति, साथ ही साथ नई इवेंट संदेशों को सम्मिलित करने के लिए तेज़ होने की आवश्यकता नहीं है
|नए ट्रेसिंग संदेशों को जोड़ने के लिए तेज़ होना चाहिए
|नए अनुरेखणसंदेशों को जोड़ने के लिए तेज़ होना चाहिए
|}
|}




== स्थिति लॉगिंग ==
== इवेंट लॉगिंग ==


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


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


एक विशेष फर्म, प्रतिरूप स्थिति को "बहुत बार" रिकॉर्ड होने से रोकने के लिए स्थिति थ्रॉटलिंग के माध्यम से ध्यान रखा जाता है।
एक विशेष फर्म, प्रतिरूप इवेंट को "बहुत बार" रिकॉर्ड होने से रोकने के लिए इवेंट थ्रॉटलिंग के माध्यम से ध्यान रखा जाता है।


== सॉफ्टवेयर ट्रेसिंग ==
== सॉफ्टवेयर ट्रेसिंग ==


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


सॉफ्टवेयर ट्रेसिंग के लिए एक अन्य महत्वपूर्ण विचार प्रदर्शन है। क्योंकि सॉफ़्टवेयर ट्रेसिंग निम्न-स्तर है, ट्रेस संदेशों की संभावित मात्रा बहुत अधिक है। प्रदर्शन संबंधी चिंताओं को दूर करने के लिए, अक्सर [[संकलक]] | कंपाइल-टाइम या रन-टाइम पर सॉफ़्टवेयर ट्रेसिंग को बंद करना संभव होना चाहिए।
सॉफ्टवेयर अनुरेखणके लिए एक अन्य महत्वपूर्ण विचार प्रदर्शन है। क्योंकि सॉफ़्टवेयर अनुरेखणनिम्न-स्तर है, ट्रेस संदेशों की संभावित मात्रा बहुत अधिक है। प्रदर्शन संबंधी चिंताओं को दूर करने के लिए, अक्सर [[संकलक]] | कंपाइल-टाइम या रन-टाइम पर सॉफ़्टवेयर अनुरेखणको बंद करना संभव होना चाहिए।


अन्य विशेष चिंताएं:
अन्य विशेष चिंताएं:
* मालिकाना सॉफ़्टवेयर में, ट्रेसिंग डेटा में उत्पाद के स्रोत कोड के बारे में संवेदनशील जानकारी सम्मिलितहो सकती है।
* मालिकाना सॉफ़्टवेयर में, अनुरेखणडेटा में उत्पाद के स्रोत कोड के बारे में संवेदनशील जानकारी सम्मिलितहो सकती है।
* यदि ट्रेसिंग को रन-टाइम पर सक्षम या अक्षम किया जाता है, तो ट्रेसिंग के कई तरीकों को बाइनरी में अतिरिक्त डेटा की महत्वपूर्ण मात्रा को सम्मिलितकरने की आवश्यकता होती है, जो ट्रेसिंग अक्षम होने पर भी अप्रत्यक्ष रूप से प्रदर्शन को नुकसान पहुंचा सकता है।
* यदि अनुरेखणको रन-टाइम पर सक्षम या अक्षम किया जाता है, तो अनुरेखणके कई तरीकों को बाइनरी में अतिरिक्त डेटा की महत्वपूर्ण मात्रा को सम्मिलितकरने की आवश्यकता होती है, जो अनुरेखणअक्षम होने पर भी अप्रत्यक्ष रूप से प्रदर्शन को नुकसान पहुंचा सकता है।
* यदि संकलन-समय पर अनुरेखण सक्षम या अक्षम है, तो ग्राहक मशीन पर किसी समस्या के लिए ट्रेस डेटा प्राप्त करना ग्राहक के इच्छुक होने और सॉफ़्टवेयर के एक विशेष, अनुरेखण-सक्षम संस्करण को स्थापित करने और फिर समस्या को डुप्लिकेट करने में सक्षम होने पर निर्भर करता है।
* यदि संकलन-समय पर अनुरेखण सक्षम या अक्षम है, तो ग्राहक मशीन पर किसी समस्या के लिए ट्रेस डेटा प्राप्त करना ग्राहक के इच्छुक होने और सॉफ़्टवेयर के एक विशेष, अनुरेखण-सक्षम संस्करण को स्थापित करने और फिर समस्या को डुप्लिकेट करने में सक्षम होने पर निर्भर करता है।
* अनुरेखण के कई उपयोगों में बहुत सख्त [[मजबूती (कंप्यूटर विज्ञान)]] की आवश्यकताएं होती हैं। यह ट्रेस आउटपुट की मजबूती दोनों में है, लेकिन यह भी कि ट्रेस किए जा रहे उपयोग-मामले को बाधित नहीं किया जाना चाहिए।
* अनुरेखण के कई उपयोगों में बहुत सख्त [[मजबूती (कंप्यूटर विज्ञान)]] की आवश्यकताएं होती हैं। यह ट्रेस आउटपुट की मजबूती दोनों में है, लेकिन यह भी कि ट्रेस किए जा रहे उपयोग-मामले को बाधित नहीं किया जाना चाहिए।
* ऑपरेटिंग सिस्टम में, ट्रेसिंग कभी-कभी स्थितियों (जैसे [[बूटिंग]]) में उपयोगी होती है, जहां  स्थितिलॉगिंग प्रदान करने के लिए उपयोग की जाने वाली कुछ तकनीकें उपलब्ध नहीं हो सकती हैं।
* ऑपरेटिंग सिस्टम में, अनुरेखणकभी-कभी स्थितियों (जैसे [[बूटिंग]]) में उपयोगी होती है, जहां  स्थितिलॉगिंग प्रदान करने के लिए उपयोग की जाने वाली कुछ तकनीकें उपलब्ध नहीं हो सकती हैं।
* [[उपकरणों के नियंत्रण के लिए सॉफ्टवेयर]] में, अनुरेखण के लिए विशेष तकनीकों की आवश्यकता होती है।<ref>{{Citation|last1=Kraft|first1=Johan|title=Trace Recording for Embedded Systems: Lessons Learned from Five Industrial Projects|date=2010|work=Runtime Verification|pages=315–329|publisher=Springer Berlin Heidelberg|isbn=9783642166112|last2=Wall|first2=Anders|last3=Kienle|first3=Holger|doi=10.1007/978-3-642-16612-9_24}}</ref>
* [[उपकरणों के नियंत्रण के लिए सॉफ्टवेयर]] में, अनुरेखण के लिए विशेष तकनीकों की आवश्यकता होती है।<ref>{{Citation|last1=Kraft|first1=Johan|title=Trace Recording for Embedded Systems: Lessons Learned from Five Industrial Projects|date=2010|work=Runtime Verification|pages=315–329|publisher=Springer Berlin Heidelberg|isbn=9783642166112|last2=Wall|first2=Anders|last3=Kienle|first3=Holger|doi=10.1007/978-3-642-16612-9_24}}</ref>



Revision as of 08:35, 24 February 2023

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

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

यह आलेख मुख्य रूप से दोषमार्जन या नैदानिक ​​उद्देश्यों के लिए अनुरेखणसे संबंधित है।

इवेंट लॉगिंग बनाम ट्रेसिंग

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

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


इवेंट लॉगिंग

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

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

एक विशेष फर्म, प्रतिरूप इवेंट को "बहुत बार" रिकॉर्ड होने से रोकने के लिए इवेंट थ्रॉटलिंग के माध्यम से ध्यान रखा जाता है।

सॉफ्टवेयर ट्रेसिंग

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

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

सॉफ्टवेयर अनुरेखणके लिए एक अन्य महत्वपूर्ण विचार प्रदर्शन है। क्योंकि सॉफ़्टवेयर अनुरेखणनिम्न-स्तर है, ट्रेस संदेशों की संभावित मात्रा बहुत अधिक है। प्रदर्शन संबंधी चिंताओं को दूर करने के लिए, अक्सर संकलक | कंपाइल-टाइम या रन-टाइम पर सॉफ़्टवेयर अनुरेखणको बंद करना संभव होना चाहिए।

अन्य विशेष चिंताएं:

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


तकनीक

सॉफ्टवेयर अनुरेखण :

इवेंट लॉगिंग::

  • syslog (विशिष्ट कार्यान्वयन के लिए आलेख देखें)

दोनों के लिए उपयुक्त:

यह भी देखें

संदर्भ

  1. "The Tracing Book". Archived from the original on 2009-02-24.
  2. Kraft, Johan; Wall, Anders; Kienle, Holger (2010), "Trace Recording for Embedded Systems: Lessons Learned from Five Industrial Projects", Runtime Verification, Springer Berlin Heidelberg, pp. 315–329, doi:10.1007/978-3-642-16612-9_24, ISBN 9783642166112
  3. "Tracepoints (Debugging with GDB)". sourceware.org. Retrieved 2022-06-24.