यह कमांड स्प्लेन है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
डायग्नोस्टिक्स, स्प्लेन - वर्बोज़ चेतावनी डायग्नोस्टिक्स का उत्पादन करें
SYNOPSIS
"निदान" व्यावहारिकता का उपयोग करना:
निदान का उपयोग करें;
डायग्नोस्टिक्स -वर्बोज़ का उपयोग करें;
निदान सक्षम करें;
निदान अक्षम करें;
"स्प्लेन" स्टैंडअलोन फ़िल्टर प्रोग्राम का उपयोग करना:
पर्ल प्रोग्राम 2>diag.out
स्प्लेन [-v] [-p] डायग.आउट
दुर्व्यवहारपूर्ण स्क्रिप्ट से स्टैक ट्रेस प्राप्त करने के लिए डायग्नोस्टिक्स का उपयोग करना:
perl -Mdiagnostics=-traceonly my_script.pl
वर्णन
RSI "निदान" pragma
यह मॉड्यूल सामान्य रूप से पर्ल कंपाइलर और दोनों द्वारा उत्सर्जित संक्षिप्त निदान का विस्तार करता है
पर्ल दुभाषिया (-डब्ल्यू स्विच या "चेतावनियों का उपयोग करें" के साथ पर्ल चलाने से), संवर्द्धन
उन्हें पर्लडिआग में पाए गए अधिक व्याख्यात्मक और मनमोहक विवरणों के साथ। की तरह
अन्य व्यावहारिक रूप से, यह आपके प्रोग्राम के संकलन चरण को ही प्रभावित नहीं करता है
निष्पादन चरण.
अपने प्रोग्राम में एक प्राग्मा के रूप में उपयोग करने के लिए, केवल आह्वान करें
निदान का उपयोग करें;
आपके प्रोग्राम के प्रारंभ में (या प्रारंभ के निकट)। (ध्यान दें कि यह कर देता है पर्ल को सक्षम करें -w
ध्वज।) आपका पूरा संकलन तब उन्नत निदान के अधीन होगा।
ये अभी भी बाहर जाते हैं एसटीडीईआरआर.
रनटाइम और कंपाइलटाइम मुद्दों के बीच परस्पर क्रिया के कारण, और क्योंकि यह संभवतः है
वैसे भी यह बहुत अच्छा विचार नहीं है, आप उन्हें बंद करने के लिए "नो डायग्नोस्टिक्स" का उपयोग नहीं कर सकते
संकलन समय. हालाँकि, आप इसका उपयोग करके रनटाइम पर उनके व्यवहार को नियंत्रित कर सकते हैं अक्षम करना() और
सक्षम करना() उन्हें क्रमशः बंद और चालू करने की विधियाँ।
RSI -कहना फ़्लैग किसी भी अन्य निदान से पहले पर्लडिआग परिचय को प्रिंट करता है।
$diagnostics::PRETTY वेरिएबल पेजर्स के लिए बेहतर एस्केप अनुक्रम उत्पन्न कर सकता है।
चेतावनियाँ पर्ल से ही भेजी जाती हैं (या अधिक सटीक रूप से, वे जो विवरण से मेल खाती हैं
perldiag में पाए गए) केवल एक बार प्रदर्शित होते हैं (कोई डुप्लिकेट विवरण नहीं)। उपयोगकर्ता कोड
उत्पन्न चेतावनियाँ एक ला चेतावनी देना() अप्रभावित हैं, डुप्लिकेट उपयोगकर्ता संदेशों की अनुमति देते हैं
का प्रदर्शन किया।
पर्ल के ख़त्म होने पर यह मॉड्यूल त्रुटि संदेश में एक स्टैक ट्रेस भी जोड़ता है। यह उपयोगी है
यह पता लगाने के लिए कि मृत्यु किस कारण से हुई। -केवल पता लगाएं (या केवल -t) झंडा बंद हो जाता है
केवल स्टैक ट्रेस छोड़कर चेतावनी संदेशों की व्याख्या। तो अगर आपकी स्क्रिप्ट है
मर रहा है, इसे फिर से चलाएँ
पर्ल -एमडायग्नोस्टिक्स=-ट्रेसओनली माय_बैड_स्क्रिप्ट
मृत्यु के समय कॉल स्टैक देखने के लिए। की आपूर्ति करके -warntrace (या केवल -w)
ध्वज, उत्सर्जित कोई भी चेतावनी स्टैक ट्रेस के साथ भी आएगी।
RSI सादा कार्यक्रम
जबकि जाहिरा तौर पर यह एक पूर्णतः उत्तरी कार्यक्रम है, सादा वास्तव में यह एक लिंक से अधिक कुछ नहीं है
(निष्पादन योग्य) डायग्नोस्टिक्स.pm मॉड्यूल, साथ ही एक लिंक भी डायग्नोस्टिक्स.पॉड
दस्तावेज़ीकरण. -v ध्वज "डायग्नोस्टिक्स -वर्बोज़ का उपयोग करें" निर्देश की तरह है। -p झंडा
$diagnostics::PRETTY वेरिएबल की तरह है। चूँकि आप इसके साथ पोस्ट-प्रोसेसिंग कर रहे हैं सादा,
सक्षम होने का कोई मतलब नहीं है सक्षम करना() or अक्षम करना() प्रसंस्करण।
से आउटपुट सादा को निर्देशित किया जाता है एसटीडीओयूटी, प्राग्मा के विपरीत।
उदाहरण
निम्न फ़ाइल रनटाइम और कंपाइलटाइम दोनों पर कुछ त्रुटियों को ट्रिगर करने के लिए निश्चित है:
निदान का उपयोग करें;
कहीं नहीं प्रिंट करें "कुछ नहीं\n";
STDERR प्रिंट करें "\n\tयह संदेश सादा होना चाहिए.\n";
चेतावनी "\tयह एक उपयोगकर्ता चेतावनी है";
प्रिंट करें "\nडायग्नोस्टिक परीक्षक: कृपया एक दर्ज करें यहाँ: ";
मेरा $a, $b = अदिश राशि ;
प्रिंट "\ n";
$x/$y प्रिंट करें;
यदि आप अपना प्रोग्राम पहले चलाना पसंद करते हैं और उसकी समस्या को बाद में देखना चाहते हैं, तो यह करें:
perl -w test.pl 2>test.out
./splain < test.out
ध्यान दें कि अधिक संदिग्ध विरासत के गोले में यह आम तौर पर संभव नहीं है
सैद्धांतिक
(perl -w test.pl >/dev/tty) >& test.out
./splain < test.out
क्योंकि आपने अभी-अभी मौजूदा को स्थानांतरित किया है stdout कहीं और.
यदि आप अपने स्रोत कोड को संशोधित नहीं करना चाहते हैं, लेकिन फिर भी आपके पास तुरंत चेतावनियाँ हैं, तो यह करें:
कार्यकारी 3>&1; पर्ल -डब्ल्यू टेस्ट.पीएल 2>&1 1>&3 3>&- | स्प्लेन 1>&2 3>&-
निफ्टी, एह?
यदि आप तुरंत चेतावनियों को नियंत्रित करना चाहते हैं, तो ऐसा कुछ करें। सुनिश्चित करें कि आप ऐसा करते हैं
पहले "उपयोग करें", अन्यथा आप उस तक नहीं पहुंच पाएंगे सक्षम करना() or अक्षम करना() तरीकों.
निदान का उपयोग करें; # संपूर्ण संकलन चरण की जाँच करता है
प्रिंट करें "\nपहले फर्जी डायग का समय: स्क्वाकिंग्स\n";
BOGUS1 'नाडा' प्रिंट करें;
प्रिंट करें "पहले फर्जी के साथ किया गया\n";
निदान अक्षम करें; # केवल रनटाइम चेतावनियाँ बंद करता है
प्रिंट करें "\nदूसरे फर्जी के लिए समय: (दबाया हुआ)\n";
BOGUS2 'नाडा' प्रिंट करें;
प्रिंट करें "दूसरा फर्जी\n के साथ किया गया";
निदान सक्षम करें; # रनटाइम चेतावनियों को वापस चालू करता है
प्रिंट करें "\nतीसरे फर्जी के लिए समय: SQUAWKINGS\n";
BOGUS3 'नाडा' प्रिंट करें;
प्रिंट करें "तीसरे फर्जी के साथ किया गया\n";
निदान अक्षम करें;
प्रिंट करें "\nचौथे फर्जी के लिए समय: (दबाया हुआ)\n";
BOGUS4 'नाडा' प्रिंट करें;
प्रिंट करें "चौथा फर्जी\n के साथ किया गया";
आंतरिक
निदान संबंधी संदेश प्राप्त होते हैं perldiag.pod रनटाइम पर उपलब्ध होने पर फ़ाइल।
अन्यथा, जब स्प्लेन पैकेज बनाया जाता है तो उन्हें फ़ाइल में ही एम्बेड किया जा सकता है। देखना
la makefile ब्योरा हेतु।
यदि कोई मौजूदा $SIG{__WARN__} हैंडलर खोजा जाता है, तो उसे सम्मानित किया जाना जारी रहेगा, लेकिन
के बाद ही डायग्नोस्टिक्स::स्प्लेनथिस() फ़ंक्शन (मॉड्यूल का $SIG{__WARN__}
इंटरसेप्टर) आपकी चेतावनियों के अनुसार अपना रास्ता बना चुका है।
यदि आप बेहद उत्सुक हैं कि क्या, तो आप एक $diagnostics::DEBUG वेरिएबल सेट कर सकते हैं
तरह-तरह की चीजें इंटरसेप्ट की जा रही हैं.
प्रारंभ करें { $डायग्नोस्टिक्स::डीबग = 1 }
onworks.net सेवाओं का उपयोग करके ऑनलाइन स्प्लेन का उपयोग करें