मैं कुछ शर्त हिट करते समय पर्ल प्रोग्राम लॉन्च डीबगर चाहता हूं। कुछ अन्य भाषा पुस्तकालय द्वारा समर्थित डीबग() कथन है, क्या पर्ल में कोई समान कथन है?क्या मैं स्रोत perl प्रोग्राम में ब्रेक पॉइंट डाल सकता हूं?
उत्तर
क्या आपने अपनी स्क्रिप्ट के शीर्ष पर शेबैंग लाइन पर-डी स्विच जोड़ने का प्रयास किया है? जैसे
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";
print "Test";
कुछ यह वास्तव में निर्भर करता है यह वास्तव में कैसे शुरू किया जाता है, लेकिन कम से कम सरल मामलों में इस डिबगर शुरू कर देना चाहिए।
संपादित करें: इसके बाद आप एक निश्चित शर्त
> b [line] [condition]
उपयोग करने के साथ एक विशेष लाइन पर एक ब्रेकपाइंट सेट और
> c
मारा स्क्रिप्ट चलाने के साथ जारी रखने के लिए कर सकते हैं - डिबगर पर बंद हो जाएगा निर्दिष्ट स्थिति जब स्थिति पूरी हो जाती है
ठीक है, ऐसा कुछ है जो आपको ब्रेकपॉइंट्स की तरह कुछ करने में सक्षम बनाता है, लेकिन कार्यक्षमता व्यापक है: Perl Debugger।
मूलतः
-d
स्विच आप पर्ल निष्पादन के साथ संवाद करने की अनुमति देता है, और पर्ल निष्पादन आप के साथ संवाद करने की अनुमति देता है।$DB::single
-
मेरा कोड का पेर्ल कोड बड़ा सिस्टम का हिस्सा है, और मैं इसे कैसे नियंत्रित कर सकता हूं इसे नियंत्रित नहीं कर सकता। ऐसा लगता है कि मैं ऐसा करने के लिए केवल स्रोत फ़ाइल में संशोधन कर सकता हूं। – Thomson
@ थॉमसन टैन: उस स्थिति में, लॉगिंग बेहतर काम करेगी। [लॉग :: लॉग 4perl] पर एक नज़र डालें (http://search.cpan.org/perldoc?Log::Log4perl)। –
अगर मैं तुम्हें सही ढंग से समझ, आप अपने कोड में एक विशिष्ट डिबगर चर का उपयोग करने की आवश्यकता है। इसे अपने कोड में एक वास्तविक मान पर सेट करने से डीबगर उस लाइन पर रुक जाएगा।
$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();
आपका कोड तो, करने के लिए 1.
बेशक $ डीबी के साथ लाइन :: एक सेट में बंद है, तो आप वास्तव में सुनिश्चित नहीं कर सकते हैं कि आपके कोड तो आप डिबगर में चल रहा है जाएगा एक और समस्या पूरी तरह से। आप को भी अपना कोड perl -d
के माध्यम से चलाने की आवश्यकता है।
क्या आपका मतलब है कि मेरा प्रोग्राम डीबगर में नहीं चलता है, तो मैं $ DB :: एकल का उपयोग अपेक्षित के रूप में नहीं कर सकता? – Thomson
@ थॉम्पसन: हाँ, यह सही है। यदि आप एक पर्ल प्रोग्राम को डीबग करना चाहते हैं, तो आपको इसे डीबगर के तहत चलाना होगा। मेरे सबसे अच्छे ज्ञान के लिए, इस तरह की चीज अन्य भाषाओं में स्रोत-आधारित रीयल-टाइम डिबगिंग के अधिकांश प्रकार के लिए सच है - इसके बावजूद कॉर्डम्प्स के पोस्टमॉर्टम। – tchrist
@ क्रिसमस मुझे यकीन नहीं है कि यह पाइथन में आंतरिक रूप से कैसे काम करता है, लेकिन मैं 'पीडीबी आयात कर सकता हूं; pdb.set_trace() 'उस बिंदु पर तोड़ने के लिए कोड में कहीं भी और डीबगर दर्ज करें। मुझे किसी भी विशेष डीबग संशोधक के साथ स्क्रिप्ट चलाने की ज़रूरत नहीं है। –
- 1. ggplot2 का उपयोग करके, क्या मैं अक्ष में ब्रेक डाल सकता हूं?
- 2. ब्रेक पॉइंट एएसपीएक्स पेज
- 3. Google Analytics - क्या मैं स्पीकर में स्क्रिप्ट डाल सकता हूं?
- 4. क्या मैं NSDictionary में ऑब्जेक्टिव सी @ चयनकर्ता डाल सकता हूं?
- 5. क्या मैं stdin में बाइनरी डाल सकता हूं? सी #
- 6. मैं रूबी में लाइन ब्रेक कैसे बना सकता हूं?
- 7. क्या मैं सॉर्टेडसेट में शून्य नहीं डाल सकता?
- 8. क्या मैं डीबग बाइनरी से सी ++ स्रोत कोड का पुनर्निर्माण कर सकता हूं?
- 9. मैं JSON डेटा को कॉफीस्क्रिप्ट में कैसे डाल सकता हूं?
- 10. मैं ऑब्जेक्ट को जेनेरिक में कैसे डाल सकता हूं?
- 11. मैं तालिका में पंक्ति कैसे डाल सकता हूं?
- 12. मैं स्ट्रिंग में उद्धरण कैसे डाल सकता हूं?
- 13. क्या मैं क्यूटी-निर्माता में प्रोग्राम आउटपुट देख सकता हूं?
- 14. मैं एचटीएमएल में इनलाइन पर्ल कोड कैसे डाल सकता हूं, जैसे php?
- 15. मैं एक डेटा कैसे डाल सकता हूं। ByteString.Internal.ByteString?
- 16. मैं MySQL में क्यों नहीं डाल सकता?
- 17. क्या मैं पाइथन इनपुट बफर में हटाए जाने योग्य वर्ण डाल सकता हूं?
- 18. मैं कोई प्रोग्राम कैसे चला सकता हूं?
- 19. मैं वस्तु को गतिशील रूप से कैसे डाल सकता हूं?
- 20. क्या मैं तुलना कर सकता हूं और सी में एक पूर्णांक में एक फ़्लोटिंग-पॉइंट नंबर जोड़ सकता हूं?
- 21. क्या मैं स्थानीय स्टैंडअलोन जावास्क्रिप्ट प्रोग्राम बना सकता हूं?
- 22. मैं स्ट्रॉबेरी पर्ल के साथ प्रोग्राम कैसे चला सकता हूं?
- 23. क्या मैं आईपैड 2 पर प्रोग्राम कर सकता हूं?
- 24. मैं प्रोग्राम को एक प्रोग्राम को कैसे हटा सकता हूं?
- 25. क्या मैं उद्देश्य-सी में थोड़ी देर लूप में "ब्रेक"/"जारी रख सकता हूं"?
- 26. विजुअल स्टूडियो में, क्या मैं कोड में ब्रेकपॉइंट्स डाल सकता हूं जिसके लिए मेरे पास केवल डिबगिंग प्रतीक हैं?
- 27. क्या मैं अपने स्क्लाइट कनेक्शन और कर्सर को फ़ंक्शन में डाल सकता हूं?
- 28. क्या मैं एक नल नल फ़ील्ड में एक खाली स्ट्रिंग डाल सकता हूं?
- 29. क्या मैं पाठ संपादक (~ एक्सटेंशन) फ़ाइलों को छिपाने के लिए bashrc में कुछ डाल सकता हूं?
- 30. क्या मैं एक MYSQL डीबी तालिका में एक छवि डाल सकता हूं?
यह बहुत अच्छा है। क्या विंडोज़ पर समान वाक्यविन्यास है? – Thomson
मेरा मानना है कि पर्ल स्विच का सम्मान करेगा भले ही वास्तविक पर्ल निष्पादन योग्य लॉन्चिंग शेबैंग में सूचीबद्ध नहीं है - यानी, उपरोक्त स्क्रिप्ट के रूप में शुरू होने पर भी, सी: \ Perl \ bin \ perl.exe script.pl , यह अभी भी डीबगर शुरू करना चाहिए – ivancho