2011-02-09 18 views
17

जब मैं एक पर्ल स्क्रिप्ट चलाता हूं, तो मैं इसे कैसे डिबग कर सकता हूं? उदाहरण के लिए, ksh में मैं -x ध्वज जोड़ता हूं। लेकिन मैं पर्ल में ऐसा कैसे करता हूं?मैं एक पर्ल स्क्रिप्ट कैसे डिबग कर सकता हूं?

उत्तर

7

तो एक इंटरैक्टिव डिबगर का उपयोग कर आप के लिए ठीक है, तुम कोशिश कर सकते perldebug

10
perl -d your_script.pl args 

कैसे आप पर्ल

+0

एलेक्स के उत्तर में '-d' – DVK

+7

के लिए प्रलेखन से लिंक है चरण 1:' सख्त उपयोग करें; चेतावनियों का उपयोग करें; 'अपनी स्क्रिप्ट के शीर्ष पर। अगर इससे मदद नहीं मिलती है, तो चरण 2 पर जाएं: perl -d का उपयोग करें। –

4

डिबग मैं भी Perl debugger उपयोग करने की अनुशंसा करेंगे।

हालांकि, चूंकि आपने शैल के -x जैसे कुछ के बारे में पूछा है, तो Devel::Trace मॉड्यूल पर एक नज़र डालें जो कुछ समान करता है।

3

सबसे प्रभावी डीबगिंग टूल अभी भी careful thought, विवेकपूर्ण तरीके से रखा प्रिंट बयान के साथ युग्मित है।

Brian Kernighan, "Unix for Beginners" (1979)

(Data::Dumper साथ और बढ़ाने प्रिंट बयान)

+0

पेर्ल डीबगर के बारे में यहां बहुत अच्छी बहस भी http://www.perlmonks.org/?node_id=48579 –

+0

लिंक मर चुका है। कृपया अपने उत्तर की समीक्षा करें –

+2

तो संक्षेप में, पर्ल चाहता है कि आप इसे 1 9 7 9 की तरह कोड करें? –

3

उपयोग EclipseEPIC साथ: यह आप डिबगिंग संभावनाओं के साथ एक अच्छा आईडीई, निरीक्षण करने के लिए Perl Expression View breakpoints करने की क्षमता और सहित देता है चर के मूल्य।

0

आप दूरस्थ डिबग करना चाहते हैं तो (cgi के लिए या यदि आप डिबग कमांड लाइन के साथ गड़बड़ उत्पादन नहीं करना चाहती) इस का उपयोग करें:

दी परीक्षा:

use v5.14; 
say 1; 
say 2; 
say 3; 

एक श्रोता पर शुरू जो कुछ भी मेजबान और पोर्ट टर्मिनल 1 पर (यहाँ स्थानीय होस्ट: 12345):

$ nc -v -l localhost -p 12345 
ReadLine समर्थन उपयोग rlwrap के लिए

(आप perl -d पर भी उपयोग कर सकते हैं):

$ rlwrap nc -v -l localhost -p 12345 

और एक और टर्मिनल पर परीक्षण शुरू (कहते हैं कि टर्मिनल 2): टर्मिनल 1 पर

$ PERLDB_OPTS="RemotePort=localhost:12345" perl -d test 

इनपुट/आउटपुट:

1 
:

Connection from 127.0.0.1:42994 

Loading DB routines from perl5db.pl version 1.49 
Editor support available. 

Enter h or 'h h' for help, or 'man perldebug' for more help. 

main::(test:2): say 1; 
    DB<1> n 
main::(test:3): say 2; 
    DB<1> select $DB::OUT 

    DB<2> n 
2 
main::(test:4): say 3; 
    DB<2> n 
3 
Debugged program terminated. Use q to quit or R to restart, 
use o inhibit_exit to avoid stopping after program termination, 
h q, h R or h o to get additional info. 
    DB<2> 

टर्मिनल 2 पर आउटपुट

अगर आप डीबग टर्मिनल पर आउटपुट चाहते हैं तो वाक्य को नोट करें अल

select $DB::OUT 

आप vim उपयोगकर्ता हैं, तो यह प्लगइन स्थापित: dbg.vim जो पर्ल

के लिए बुनियादी सहायता प्रदान करता है
6

पर्ल डिबगर के तहत अपनी स्क्रिप्ट को चलाने के लिए आप -d स्विच का उपयोग करना चाहिए:

perl -d script.pl 

लेकिन पर्ल लचीला है। यह कुछ हुक की आपूर्ति और आप आप

तो अलग डिबगर उपयोग करना चाहते हैं के रूप में आप कर सकते हैं काम करने के लिए डिबगर मजबूर हो सकता है:

perl -d:DebugHooks::Terminal script.pl 
# OR 
perl -d:Trepan script.pl 

इन मॉड्यूल देखो here और here

कई सबसे दिलचस्प पर्ल रहे हैं मॉड्यूल है कि पर्ल डिबगर internals में हुक: Devel::NYTProf, Devel::Cover

और many others

+1

मुझे डेवेल :: NYTProf पाया गया है जो मेरे पर्ल कोड में धीमी धब्बे को पहचानने और तेज़ करने में अमूल्य है। –

+0

@ मैथ्यूलॉक हाँ, [डेवेल :: एनवाईटीपीआरओफ़] (https://metacpan.org/pod/Devel::NYTProf) अद्भुत बात है –

संबंधित मुद्दे

 संबंधित मुद्दे