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

From Vigyanwiki
No edit summary
 
(22 intermediate revisions by 3 users not shown)
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> अनुरेखण एक [[क्रॉस-कटिंग चिंता|क्रॉस-कटिंग की स्थिति]] है।


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


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


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


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! स्थिति लॉगिंग !! सॉफ्टवेयर ट्रेसिंग
! इवेंट लॉगिंग !! सॉफ्टवेयर अनुरेखण
|-
|-
| मुख्य रूप से प्रणाली प्रशासकों द्वारा प्रयुक्त किया जाता है
| मुख्य रूप से प्रणाली प्रशासकों द्वारा प्रयुक्त किया जाता है
Line 20: Line 20:
| लॉग "निम्न-स्तर" जानकारी (उदाहरण के लिए एक अपवाद मुक्त )
| लॉग "निम्न-स्तर" जानकारी (उदाहरण के लिए एक अपवाद मुक्त )
|-
|-
| बहुत अधिक "सशब्द" नहीं होना चाहिए (इसमें कई प्रतिरूप स्थिति या जानकारी सम्मिलित है जो इसके उद्दिष्ट दर्शकों के लिए सहायक नहीं है)
| बहुत अधिक "सशब्द" नहीं होना चाहिए (इसमें कई प्रतिरूप इवेंट या जानकारी सम्मिलित है जो इसके उद्दिष्ट दर्शकों के लिए सहायक नहीं है)
| सशब्द हो सकता है
| सशब्द हो सकता है
|-
|-
|एक मानक-आधारित निर्गम प्रारूप अक्सर आकर्षक होता है, कभी-कभी आवश्यक भी
|एक मानक-आधारित निर्गम प्रारूप अक्सर आकर्षक होता है, कभी-कभी आवश्यक भी
| Few limitations on output format
|निर्गम प्रारूप पर कुछ सीमाएँ
|-
|-
| Event log messages are often [[software localization|localized]]
|इवेंट लॉग संदेश अक्सर स्थानीयकृत होते हैं
| Localization is rarely a concern
|स्थानीयकरण शायद ही, ये चिंता का विषय है
|-
|-
| Addition of new types of events, as well as new event messages, need not be agile
|नए प्रकार के ईवेंट, साथ ही साथ नए इवेंट संदेशों को सम्मिलित करने के लिए तेज़ होने की आवश्यकता नहीं है
| Addition of new tracing messages ''must'' be agile
|नए अनुरेखण संदेशों को जोड़ने के लिए तेज़ होना चाहिए
|}
|}


Line 36: Line 36:
== इवेंट लॉगिंग ==
== इवेंट लॉगिंग ==


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


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


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


== सॉफ्टवेयर ट्रेसिंग ==
== सॉफ्टवेयर अनुरेखण ==


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


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


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




== तकनीक ==
== तकनीक ==


सॉफ्टवेयर अनुरेखण:
सॉफ्टवेयर अनुरेखण :
* ट्रेसिंग मैक्रोज़
* अनुरेखण मैक्रोज़
* डिबगर को आउटपुट
* दोषमार्जक का निर्गम
* पहलू-उन्मुख प्रोग्रामिंग और संबंधित [[इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग)]] तकनीकें
* [[पहलू-उन्मुख प्रोग्रामिंग]] और संबंधित [[उपकरण]] तकनीक
* [[विंडोज सॉफ्टवेयर ट्रेस प्रीप्रोसेसर]] (उर्फ WPP)
* [[विंडोज सॉफ्टवेयर ट्रेस प्रीप्रोसेसर|विंडोज सॉफ्टवेयर अनुरेख पूर्वप्रक्रमक]] (उर्फ WPP)
* [[DTrace]] के साथ FreeBSD और SmartOS ट्रेसिंग - कर्नेल और यूजरलैंड का पता लगाता है
* [[DTrace|Dअनुरेखण]] के साथ FreeBSD और SmartOS अनुरेखण - कर्नेल और यूजरलैंड का पता लगाता है
* [[ftrace]] के साथ लिनक्स कर्नेल ट्रेसिंग
* लिनक्स कर्नेल अनुरेखण [[ftrace|fअनुरेखण]] के साथ
* [[कर्नेल मार्कर]] और LTTng के साथ लिनक्स सिस्टम-लेवल और यूजर-लेवल ट्रेसिंग
* [[कर्नेल मार्कर|कर्नेल अनुचिह्नक]] और [[LTTng]] के साथ लिनक्स प्रणाली -स्तर और उपयोगकर्ता -स्तर अनुरेखण
* यूएसटी के साथ लिनक्स एप्लिकेशन ट्रेसिंग - [[एलटीटीएनजी]] के समान परियोजना का हिस्सा
* यूएसटी के साथ लिनक्स अनुप्रयोग अनुरेखण - [[एलटीटीएनजी|LTTng]] के समान योजना का हिस्सा
* Linux C/C++ एप्लिकेशन ट्रेसिंग [https://github.com/corelight/cwrap cwrap] के साथ
* लिनक्स C/C++ अनुप्रयोग अनुरेखण [https://github.com/corelight/cwrap cwrap] के साथ
* [[जीएनयू डीबगर]] के ट्रेस कमांड के साथ ट्रेसिंग<ref>{{Cite web |title=Tracepoints (Debugging with GDB) |url=https://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html |access-date=2022-06-24 |website=sourceware.org}}</ref>
* [[जीएनयू डीबगर|जीएनयू दोषमार्जको]] के अनुरेख कमांड के साथ अनुरेखण <ref>{{Cite web |title=Tracepoints (Debugging with GDB) |url=https://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html |access-date=2022-06-24 |website=sourceware.org}}</ref>
इवेंट लॉगिंग:
इवेंट लॉगिंग::
* [[syslog]] (विशिष्ट कार्यान्वयन के लिए आलेख देखें)
* [[syslog]] (विशिष्ट कार्यान्वयन के लिए आलेख देखें)


दोनों के लिए उपयुक्त:
दोनों के लिए उपयुक्त:
* [[निर्देश सेट सिम्युलेटर]]
* [[निर्देश सेट सिम्युलेटर|निर्देशन सेट अनुरूपण]]


== यह भी देखें ==
== यह भी देखें ==


* शाखा ट्रेस
* उपखंड अनुरेखण
* इंस्ट्रुमेंटेशन (कंप्यूटर प्रोग्रामिंग)
* उपकरण (कंप्यूटर प्रोग्रामिंग)
* [[लॉगिंग (सॉफ्टवेयर)]]
* [[लॉगिंग (सॉफ्टवेयर)]]
* डिबगिंग
* दोषमार्जन भाषा


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
[[Category: डिबगिंग]]


[[Category: Machine Translated Page]]
[[Category:Created On 18/02/2023]]
[[Category:Created On 18/02/2023]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Translated in Hindi]]
[[Category:Templates Vigyan Ready]]
[[Category:डिबगिंग]]

Latest revision as of 18:01, 3 March 2023

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

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

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

इवेंट लॉगिंग बनाम अनुरेखण

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

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


इवेंट लॉगिंग

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

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

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

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

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

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

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

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

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