How can I debug a Perl script?

前端 未结 8 1390
天涯浪人
天涯浪人 2021-02-01 16:47

When I run a Perl script, how can I debug it? For example, in ksh I add the -x flag. But how I do the same in Perl?

8条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-01 16:57

    If you want to do remote debugging (for CGI or if you don't want to mess output with debug command line), use this:

    Given test:

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

    Start a listener on whatever host and port on terminal 1 (here localhost:12345):

    $ nc -v -l localhost -p 12345
    

    For readline support use rlwrap (you can use on perl -d too):

    $ rlwrap nc -v -l localhost -p 12345
    

    And start the test on another terminal (say terminal 2):

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

    Input/Output on terminal 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>
    

    Output on terminal 2:

    1
    

    Note the sentence if you want output on debug terminal

    select $DB::OUT
    

    If you are Vim user, install this plugin: dbg.vim which provides basic support for Perl.

提交回复
热议问题