ट्रेसिंग (सॉफ्टवेयर): Difference between revisions
Line 34: | Line 34: | ||
== | == स्थिति लॉगिंग == | ||
स्थिति लॉगिंग प्रणाली प्रशासकों को निदानिकी और [[लेखा परीक्षा|अंकेक्षण]] के लिए उपयोगी जानकारी प्रदान करता है। स्थितियों के विभिन्न वर्ग जो लॉग किए जाएंगे, साथ ही साथ स्थिति संदेशों में कौन से विवरण दिखाई देंगे, अक्सर विकास चक्र के आरंभ में माने जाते हैं। कई स्थिति लॉगिंग तकनीकी अनुमति देती हैं या यहां तक कि प्रत्येक वर्ग की स्थिति को एक विशिष्ट "कोड" नियत करने की आवश्यकता होती है, जिसका उपयोग स्थिति लॉगिंग सॉफ़्टवेयर या एक अलग दर्शक (जैसे, स्थिति दर्शक) द्वारा मानव-पठनीय संदेश को प्रारूपित और निर्गम करने के लिए किया जाता है। यह स्थानीकरण की सुविधा देता है और प्रणाली प्रशासकों को होने वाली समस्याओं पर अधिक आसानी से जानकारी प्राप्त करने की अनुमति देता है। | |||
क्योंकि | क्योंकि स्थितिलॉगिंग का उपयोग उच्च-स्तरीय जानकारी (अक्सर विफलता की जानकारी) को लॉग करने के लिए किया जाता है, लॉगिंग कार्यान्वयन का प्रदर्शन अक्सर कम महत्वपूर्ण होता है। | ||
एक विशेष चिंता, डुप्लिकेट ईवेंट को बहुत बार रिकॉर्ड होने से रोकना, | एक विशेष चिंता, डुप्लिकेट ईवेंट को बहुत बार रिकॉर्ड होने से रोकना, स्थितिथ्रॉटलिंग के माध्यम से ध्यान रखा जाता है। | ||
== सॉफ्टवेयर ट्रेसिंग == | == सॉफ्टवेयर ट्रेसिंग == | ||
सॉफ्टवेयर ट्रेसिंग डेवलपर्स को डिबगिंग के लिए उपयोगी जानकारी प्रदान करता है। इस जानकारी का उपयोग विकास चक्रों के दौरान और सॉफ़्टवेयर के रिलीज़ होने के बाद दोनों में किया जाता है। | सॉफ्टवेयर ट्रेसिंग डेवलपर्स को डिबगिंग के लिए उपयोगी जानकारी प्रदान करता है। इस जानकारी का उपयोग विकास चक्रों के दौरान और सॉफ़्टवेयर के रिलीज़ होने के बाद दोनों में किया जाता है। स्थितिलॉगिंग के विपरीत, सॉफ़्टवेयर ट्रेसिंग में आमतौर पर ईवेंट या ईवेंट कोड की श्रेणी की अवधारणा नहीं होती है। सॉफ़्टवेयर ट्रेसिंग के लिए ईवेंट कोड पर आधारित ईवेंट-लॉगिंग समाधान अनुपयुक्त होने के अन्य कारणों में सम्मिलितहैं: | ||
* क्योंकि सॉफ्टवेयर ट्रेसिंग निम्न स्तर का है, ऐसे कई और प्रकार के संदेश होते हैं जिन्हें परिभाषित करने की आवश्यकता होती है, जिनमें से कई कोड में केवल एक ही स्थान पर उपयोग किए जाएंगे। इवेंट-कोड प्रतिमान इन एक-शॉट संदेशों के लिए महत्वपूर्ण विकास ओवरहेड का परिचय देता है। | * क्योंकि सॉफ्टवेयर ट्रेसिंग निम्न स्तर का है, ऐसे कई और प्रकार के संदेश होते हैं जिन्हें परिभाषित करने की आवश्यकता होती है, जिनमें से कई कोड में केवल एक ही स्थान पर उपयोग किए जाएंगे। इवेंट-कोड प्रतिमान इन एक-शॉट संदेशों के लिए महत्वपूर्ण विकास ओवरहेड का परिचय देता है। | ||
* | * स्थितिलॉगिंग की तुलना में लॉग किए गए संदेशों के प्रकार अक्सर विकास चक्र के माध्यम से कम स्थिर होते हैं। | ||
* क्योंकि ट्रेसिंग आउटपुट का उपयोग डेवलपर द्वारा किया जाना है, संदेशों को स्थानीयकृत करने की आवश्यकता नहीं है। ट्रेसिंग संदेशों को अन्य संसाधनों से अलग रखना जिन्हें स्थानीयकृत करने की आवश्यकता है (जैसे ईवेंट संदेश) इसलिए महत्वपूर्ण है। | * क्योंकि ट्रेसिंग आउटपुट का उपयोग डेवलपर द्वारा किया जाना है, संदेशों को स्थानीयकृत करने की आवश्यकता नहीं है। ट्रेसिंग संदेशों को अन्य संसाधनों से अलग रखना जिन्हें स्थानीयकृत करने की आवश्यकता है (जैसे ईवेंट संदेश) इसलिए महत्वपूर्ण है। | ||
* संदेश हैं कि [[अभिकथन (कंप्यूटिंग)]]। | * संदेश हैं कि [[अभिकथन (कंप्यूटिंग)]]। | ||
Line 58: | Line 58: | ||
* यदि संकलन-समय पर अनुरेखण सक्षम या अक्षम है, तो ग्राहक मशीन पर किसी समस्या के लिए ट्रेस डेटा प्राप्त करना ग्राहक के इच्छुक होने और सॉफ़्टवेयर के एक विशेष, अनुरेखण-सक्षम संस्करण को स्थापित करने और फिर समस्या को डुप्लिकेट करने में सक्षम होने पर निर्भर करता है। | * यदि संकलन-समय पर अनुरेखण सक्षम या अक्षम है, तो ग्राहक मशीन पर किसी समस्या के लिए ट्रेस डेटा प्राप्त करना ग्राहक के इच्छुक होने और सॉफ़्टवेयर के एक विशेष, अनुरेखण-सक्षम संस्करण को स्थापित करने और फिर समस्या को डुप्लिकेट करने में सक्षम होने पर निर्भर करता है। | ||
* अनुरेखण के कई उपयोगों में बहुत सख्त [[मजबूती (कंप्यूटर विज्ञान)]] की आवश्यकताएं होती हैं। यह ट्रेस आउटपुट की मजबूती दोनों में है, लेकिन यह भी कि ट्रेस किए जा रहे उपयोग-मामले को बाधित नहीं किया जाना चाहिए। | * अनुरेखण के कई उपयोगों में बहुत सख्त [[मजबूती (कंप्यूटर विज्ञान)]] की आवश्यकताएं होती हैं। यह ट्रेस आउटपुट की मजबूती दोनों में है, लेकिन यह भी कि ट्रेस किए जा रहे उपयोग-मामले को बाधित नहीं किया जाना चाहिए। | ||
* ऑपरेटिंग सिस्टम में, ट्रेसिंग कभी-कभी स्थितियों (जैसे [[बूटिंग]]) में उपयोगी होती है, जहां | * ऑपरेटिंग सिस्टम में, ट्रेसिंग कभी-कभी स्थितियों (जैसे [[बूटिंग]]) में उपयोगी होती है, जहां स्थितिलॉगिंग प्रदान करने के लिए उपयोग की जाने वाली कुछ तकनीकें उपलब्ध नहीं हो सकती हैं। | ||
* [[उपकरणों के नियंत्रण के लिए सॉफ्टवेयर]] में, अनुरेखण के लिए विशेष तकनीकों की आवश्यकता होती है।<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> | ||
Line 75: | Line 75: | ||
* Linux C/C++ एप्लिकेशन ट्रेसिंग [https://github.com/corelight/cwrap cwrap] के साथ | * Linux 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]] (विशिष्ट कार्यान्वयन के लिए आलेख देखें) | ||
Revision as of 17:49, 23 February 2023
Part of a series on |
Software development |
---|
सॉफ्टवेयर इंजीनियरिंग में, ट्रेसिंग में प्रोग्राम के क्रियान्वयन के बारे में जानकारी रिकॉर्ड करने के लिए लॉगिंग का एक विशेष उपयोग सम्मिलित होता है। यह जानकारी विशिष्ट रूप से प्रोग्रामर द्वारा दोषमार्जन उद्देश्यों के लिए उपयोग की जाती है, और इसके अतिरिक्त, ड्राफ़्ट लॉग में सम्मिलित जानकारी के प्रकार और विवरण के आधार पर, अभ्यस्त प्रणाली प्रशासकों या तकनीकी सहायता स्टाफ़ द्वारा और सॉफ़्टवेयर जांच साधनो द्वारा सामान्य समस्याओं का निदान करने के लिए उपयोग किया जाता है। सॉफ़्टवेयर।[1] ट्रेसिंग एक क्रॉस-कटिंग फर्म है।
ट्रेसिंग और लॉगिंग के अन्य रूपों के बीच निरन्तर एक स्पष्ट अंतर नहीं होता है, अतिरिक्त इसके कि ट्रेसिंग शब्द लगभग कभी भी लॉगिंग पर लागू नहीं होता है जो प्रोग्राम की एक कार्यात्मक आवश्यकता है (इसलिए किसी बाहरी स्रोत से डेटा के लॉगिंग को छोड़कर, जैसे उच्च-ऊर्जा भौतिकी प्रयोग में डेटा संकलन ,और राइट-फॉरवर्ड लॉगिंग)। लॉग जो रिकॉर्ड प्रोग्राम उपयोग (जैसे सर्वर लॉग) या ऑपरेटिंग-सिस्टम स्थिति मुख्य रूप से एक प्रणाली प्रशासक (उदाहरण के लिए स्थिति देखें) के लिए एक पारिभाषिक रूप में प्राचीन क्षेत्र में आते हैं।
यह आलेख मुख्य रूप से दोषमार्जन या नैदानिक उद्देश्यों के लिए ट्रेसिंग से संबंधित है।
स्थिति लॉगिंग बनाम ट्रेसिंग
स्थिति लॉगिंग और सॉफ़्टवेयर ट्रेसिंग के बीच स्पष्ट अंतर करने में कठिनाइयाँ इस तथ्य से उत्पन्न होती हैं कि कुछ समान तकनीकों का उपयोग दोनों के लिए किया जाता है, और आगे क्योंकि कई मापदंड जो दोनों के बीच अंतर करते हैं वे असतत के बजाय निरंतर हैं। निम्नलिखित तालिका में कुछ महत्वपूर्ण, लेकिन किसी भी तरह से सटीक या सार्वभौमिक भेद नहीं है, जो विकासक द्वारा प्रत्येक उद्देश्य के लिए तकनीकों का चयन करने के लिए उपयोग किया जाता है, और जो प्रत्येक क्षेत्र में नई तकनीकों के अलग-अलग विकास का मार्गदर्शन करते हैं:
स्थिति लॉगिंग | सॉफ्टवेयर ट्रेसिंग |
---|---|
मुख्य रूप से प्रणाली प्रशासकों द्वारा प्रयुक्त किया जाता है | मुख्य रूप से प्रशासकों द्वारा प्रयुक्त |
लॉग "उच्च-स्तरीय" जानकारी (उदाहरण के लिए, प्रोग्राम की स्थापना विफल) | लॉग "निम्न-स्तर" जानकारी (उदाहरण के लिए एक अपवाद मुक्त ) |
बहुत अधिक "सशब्द" नहीं होना चाहिए (इसमें कई प्रतिरूप स्थिति या जानकारी सम्मिलित है जो इसके उद्दिष्ट दर्शकों के लिए सहायक नहीं है) | सशब्द हो सकता है |
एक मानक-आधारित निर्गम प्रारूप अक्सर आकर्षक होता है, कभी-कभी आवश्यक भी | निर्गम प्रारूप पर कुछ सीमाएँ |
स्थिति लॉग संदेश अक्सर स्थानीयकृत होते हैं | स्थानीयकरण शायद ही कभी फर्म का विषय है |
नई प्रकार की स्थिति, साथ ही साथ नई स्थिति संदेशों को सम्मिलित करने के लिए तेज़ होने की आवश्यकता नहीं है | नए ट्रेसिंग संदेशों को जोड़ने के लिए तेज़ होना चाहिए |
स्थिति लॉगिंग
स्थिति लॉगिंग प्रणाली प्रशासकों को निदानिकी और अंकेक्षण के लिए उपयोगी जानकारी प्रदान करता है। स्थितियों के विभिन्न वर्ग जो लॉग किए जाएंगे, साथ ही साथ स्थिति संदेशों में कौन से विवरण दिखाई देंगे, अक्सर विकास चक्र के आरंभ में माने जाते हैं। कई स्थिति लॉगिंग तकनीकी अनुमति देती हैं या यहां तक कि प्रत्येक वर्ग की स्थिति को एक विशिष्ट "कोड" नियत करने की आवश्यकता होती है, जिसका उपयोग स्थिति लॉगिंग सॉफ़्टवेयर या एक अलग दर्शक (जैसे, स्थिति दर्शक) द्वारा मानव-पठनीय संदेश को प्रारूपित और निर्गम करने के लिए किया जाता है। यह स्थानीकरण की सुविधा देता है और प्रणाली प्रशासकों को होने वाली समस्याओं पर अधिक आसानी से जानकारी प्राप्त करने की अनुमति देता है।
क्योंकि स्थितिलॉगिंग का उपयोग उच्च-स्तरीय जानकारी (अक्सर विफलता की जानकारी) को लॉग करने के लिए किया जाता है, लॉगिंग कार्यान्वयन का प्रदर्शन अक्सर कम महत्वपूर्ण होता है।
एक विशेष चिंता, डुप्लिकेट ईवेंट को बहुत बार रिकॉर्ड होने से रोकना, स्थितिथ्रॉटलिंग के माध्यम से ध्यान रखा जाता है।
सॉफ्टवेयर ट्रेसिंग
सॉफ्टवेयर ट्रेसिंग डेवलपर्स को डिबगिंग के लिए उपयोगी जानकारी प्रदान करता है। इस जानकारी का उपयोग विकास चक्रों के दौरान और सॉफ़्टवेयर के रिलीज़ होने के बाद दोनों में किया जाता है। स्थितिलॉगिंग के विपरीत, सॉफ़्टवेयर ट्रेसिंग में आमतौर पर ईवेंट या ईवेंट कोड की श्रेणी की अवधारणा नहीं होती है। सॉफ़्टवेयर ट्रेसिंग के लिए ईवेंट कोड पर आधारित ईवेंट-लॉगिंग समाधान अनुपयुक्त होने के अन्य कारणों में सम्मिलितहैं:
- क्योंकि सॉफ्टवेयर ट्रेसिंग निम्न स्तर का है, ऐसे कई और प्रकार के संदेश होते हैं जिन्हें परिभाषित करने की आवश्यकता होती है, जिनमें से कई कोड में केवल एक ही स्थान पर उपयोग किए जाएंगे। इवेंट-कोड प्रतिमान इन एक-शॉट संदेशों के लिए महत्वपूर्ण विकास ओवरहेड का परिचय देता है।
- स्थितिलॉगिंग की तुलना में लॉग किए गए संदेशों के प्रकार अक्सर विकास चक्र के माध्यम से कम स्थिर होते हैं।
- क्योंकि ट्रेसिंग आउटपुट का उपयोग डेवलपर द्वारा किया जाना है, संदेशों को स्थानीयकृत करने की आवश्यकता नहीं है। ट्रेसिंग संदेशों को अन्य संसाधनों से अलग रखना जिन्हें स्थानीयकृत करने की आवश्यकता है (जैसे ईवेंट संदेश) इसलिए महत्वपूर्ण है।
- संदेश हैं कि अभिकथन (कंप्यूटिंग)।
- ट्रेसिंग संदेशों को कोड में रखा जाना चाहिए, क्योंकि वे कोड की पठनीयता में वृद्धि कर सकते हैं। इवेंट-लॉगिंग समाधानों के साथ यह हमेशा संभव या व्यवहार्य नहीं होता है।
सॉफ्टवेयर ट्रेसिंग के लिए एक अन्य महत्वपूर्ण विचार प्रदर्शन है। क्योंकि सॉफ़्टवेयर ट्रेसिंग निम्न-स्तर है, ट्रेस संदेशों की संभावित मात्रा बहुत अधिक है। प्रदर्शन संबंधी चिंताओं को दूर करने के लिए, अक्सर संकलक | कंपाइल-टाइम या रन-टाइम पर सॉफ़्टवेयर ट्रेसिंग को बंद करना संभव होना चाहिए।
अन्य विशेष चिंताएं:
- मालिकाना सॉफ़्टवेयर में, ट्रेसिंग डेटा में उत्पाद के स्रोत कोड के बारे में संवेदनशील जानकारी सम्मिलितहो सकती है।
- यदि ट्रेसिंग को रन-टाइम पर सक्षम या अक्षम किया जाता है, तो ट्रेसिंग के कई तरीकों को बाइनरी में अतिरिक्त डेटा की महत्वपूर्ण मात्रा को सम्मिलितकरने की आवश्यकता होती है, जो ट्रेसिंग अक्षम होने पर भी अप्रत्यक्ष रूप से प्रदर्शन को नुकसान पहुंचा सकता है।
- यदि संकलन-समय पर अनुरेखण सक्षम या अक्षम है, तो ग्राहक मशीन पर किसी समस्या के लिए ट्रेस डेटा प्राप्त करना ग्राहक के इच्छुक होने और सॉफ़्टवेयर के एक विशेष, अनुरेखण-सक्षम संस्करण को स्थापित करने और फिर समस्या को डुप्लिकेट करने में सक्षम होने पर निर्भर करता है।
- अनुरेखण के कई उपयोगों में बहुत सख्त मजबूती (कंप्यूटर विज्ञान) की आवश्यकताएं होती हैं। यह ट्रेस आउटपुट की मजबूती दोनों में है, लेकिन यह भी कि ट्रेस किए जा रहे उपयोग-मामले को बाधित नहीं किया जाना चाहिए।
- ऑपरेटिंग सिस्टम में, ट्रेसिंग कभी-कभी स्थितियों (जैसे बूटिंग) में उपयोगी होती है, जहां स्थितिलॉगिंग प्रदान करने के लिए उपयोग की जाने वाली कुछ तकनीकें उपलब्ध नहीं हो सकती हैं।
- उपकरणों के नियंत्रण के लिए सॉफ्टवेयर में, अनुरेखण के लिए विशेष तकनीकों की आवश्यकता होती है।[2]
तकनीक
सॉफ्टवेयर अनुरेखण:
- ट्रेसिंग मैक्रोज़
- डिबगर को आउटपुट
- पहलू-उन्मुख प्रोग्रामिंग और संबंधित इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) तकनीकें
- विंडोज सॉफ्टवेयर ट्रेस प्रीप्रोसेसर (उर्फ WPP)
- DTrace के साथ FreeBSD और SmartOS ट्रेसिंग - कर्नेल और यूजरलैंड का पता लगाता है
- ftrace के साथ लिनक्स कर्नेल ट्रेसिंग
- कर्नेल मार्कर और LTTng के साथ लिनक्स सिस्टम-लेवल और यूजर-लेवल ट्रेसिंग
- यूएसटी के साथ लिनक्स एप्लिकेशन ट्रेसिंग - एलटीटीएनजी के समान परियोजना का हिस्सा
- Linux C/C++ एप्लिकेशन ट्रेसिंग cwrap के साथ
- जीएनयू डीबगर के ट्रेस कमांड के साथ ट्रेसिंग[3]
स्थितिलॉगिंग:
- syslog (विशिष्ट कार्यान्वयन के लिए आलेख देखें)
दोनों के लिए उपयुक्त:
यह भी देखें
- शाखा ट्रेस
- इंस्ट्रुमेंटेशन (कंप्यूटर प्रोग्रामिंग)
- लॉगिंग (सॉफ्टवेयर)
- डिबगिंग
संदर्भ
- ↑ "The Tracing Book". Archived from the original on 2009-02-24.
- ↑ 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
- ↑ "Tracepoints (Debugging with GDB)". sourceware.org. Retrieved 2022-06-24.