home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 July / AMIGA_1996_7.BIN / ausgabe_7_96 / pd-programmierung / perl5_002bin.lha / man / catp / perldebug.0 < prev    next >
Text File  |  1996-03-02  |  11KB  |  265 lines

  1.  
  2.  
  3.  
  4. PERLDEBUG(1)   User Contributed Perl Documentation   PERLDEBUG(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perldebug - Perl debugging
  9.  
  10. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  11.        First of all, have you tried using the ----wwww switch?
  12.  
  13.        DDDDeeeebbbbuuuuggggggggiiiinnnngggg
  14.  
  15.        If you invoke Perl with a ----dddd switch, your script will be
  16.        run under the debugger.  However, the Perl debugger is not
  17.        a separate program as it is in a C environment.  Instead,
  18.        the ----dddd flag tells the compiler to insert source
  19.        information into the pseudocode it's about to hand to the
  20.        interpreter.  (That means your code must compile correctly
  21.        for the debugger to work on it.)  Then when the
  22.        interpreter starts up, it pre-loads a Perl library file
  23.        containing the debugger itself.  The program will halt
  24.        before the first executable statement (but see below) and
  25.        ask you for one of the following commands:
  26.  
  27.        h           Prints out a help message.
  28.  
  29.        T           Stack trace.  If you do bizarre things to your
  30.                    @@@@____ arguments in a subroutine, the stack
  31.                    backtrace will not always show the original
  32.                    values.
  33.  
  34.        s           Single step.  Executes until it reaches the
  35.                    beginning of another statement.
  36.  
  37.        n           Next.  Executes over subroutine calls, until
  38.                    it reaches the beginning of the next
  39.                    statement.
  40.  
  41.        f           Finish.  Executes statements until it has
  42.                    finished the current subroutine.
  43.  
  44.        c           Continue.  Executes until the next breakpoint
  45.                    is reached.
  46.  
  47.        c line      Continue to the specified line.  Inserts a
  48.                    one-time-only breakpoint at the specified
  49.                    line.
  50.  
  51.        <CR>        Repeat last n or s.
  52.  
  53.        l min+incr  List incr+1 lines starting at min.  If min is
  54.                    omitted, starts where last listing left off.
  55.                    If incr is omitted, previous value of incr is
  56.                    used.
  57.  
  58.        l min-max   List lines in the indicated range.
  59.  
  60.  
  61.  
  62.  
  63.  
  64. 18/Oct/94                perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLDEBUG(1)   User Contributed Perl Documentation   PERLDEBUG(1)
  71.  
  72.  
  73.        l line      List just the indicated line.
  74.  
  75.        l           List next window.
  76.  
  77.        -           List previous window.
  78.  
  79.        w line      List window (a few lines worth of code) around
  80.                    line.
  81.  
  82.        l subname   List subroutine.  If it's a long subroutine it
  83.                    just lists the beginning.  Use "l" to list
  84.                    more.
  85.  
  86.        /pattern/   Regular expression search forward in the
  87.                    source code for pattern; the final / is
  88.                    optional.
  89.  
  90.        ?pattern?   Regular expression search backward in the
  91.                    source code for pattern; the final ? is
  92.                    optional.
  93.  
  94.        L           List lines that have breakpoints or actions.
  95.  
  96.        S           Lists the names of all subroutines.
  97.  
  98.        t           Toggle trace mode on or off.
  99.  
  100.        b line [ condition ]
  101.                    Set a breakpoint.  If line is omitted, sets a
  102.                    breakpoint on the line that is about to be
  103.                    executed.  If a condition is specified, it is
  104.                    evaluated each time the statement is reached
  105.                    and a breakpoint is taken only if the
  106.                    condition is true.  Breakpoints may only be
  107.                    set on lines that begin an executable
  108.                    statement.  Conditions don't use iiiiffff:
  109.  
  110.                        bbbb 222233337777 $$$$xxxx >>>> 33330000
  111.                        bbbb 33333333 ////ppppaaaatttttttteeeerrrrnnnn////iiii
  112.  
  113.  
  114.        b subname [ condition ]
  115.                    Set breakpoint at first executable line of
  116.                    subroutine.
  117.  
  118.        d line      Delete breakpoint.  If line is omitted,
  119.                    deletes the breakpoint on the line that is
  120.                    about to be executed.
  121.  
  122.        D           Delete all breakpoints.
  123.  
  124.        a line command
  125.                    Set an action for line.  A multiline command
  126.                    may be entered by backslashing the newlines.
  127.  
  128.  
  129.  
  130. 18/Oct/94                perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLDEBUG(1)   User Contributed Perl Documentation   PERLDEBUG(1)
  137.  
  138.  
  139.                    This command is Perl code, not another
  140.                    debugger command.
  141.  
  142.        A           Delete all line actions.
  143.  
  144.        < command   Set an action to happen before every debugger
  145.                    prompt.  A multiline command may be entered by
  146.                    backslashing the newlines.
  147.  
  148.        > command   Set an action to happen after the prompt when
  149.                    you've just given a command to return to
  150.                    executing the script.  A multiline command may
  151.                    be entered by backslashing the newlines.
  152.  
  153.        V package [symbols]
  154.                    Display all (or some) variables in package
  155.                    (defaulting to the mmmmaaaaiiiinnnn package) using a data
  156.                    pretty-printer (hashes show their keys and
  157.                    values so you see what's what, control
  158.                    characters are made printable, etc.).  Make
  159.                    sure you don't put the type specifier (like $)
  160.                    there, just the symbol names, like this:
  161.  
  162.                        VVVV DDDDBBBB ffffiiiilllleeeennnnaaaammmmeeee lllliiiinnnneeee
  163.  
  164.  
  165.        X [symbols] Same as as "V" command, but within the current
  166.                    package.
  167.  
  168.        ! number    Redo a debugging command.  If number is
  169.                    omitted, redoes the previous command.
  170.  
  171.        ! -number   Redo the command that was that many commands
  172.                    ago.
  173.  
  174.        H -number   Display last n commands.  Only commands longer
  175.                    than one character are listed.  If number is
  176.                    omitted, lists them all.
  177.  
  178.        q or ^D     Quit.  ("quit" doesn't work for this.)
  179.  
  180.        command     Execute command as a Perl statement.  A
  181.                    missing semicolon will be supplied.
  182.  
  183.        p expr      Same as pppprrrriiiinnnntttt DDDDBBBB::::::::OOOOUUUUTTTT eeeexxxxpppprrrr.  The DB::OUT
  184.                    filehandle is opened to /dev/tty, regardless
  185.                    of where STDOUT may be redirected to.
  186.  
  187.        Any command you type in that isn't recognized by the
  188.        debugger will be directly executed (eeeevvvvaaaallll'd) as Perl code.
  189.        Leading white space will cause the debugger to think it's
  190.        NNNNOOOOTTTT a debugger command.
  191.  
  192.        If you have any compile-time executable statements (code
  193.  
  194.  
  195.  
  196. 18/Oct/94                perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLDEBUG(1)   User Contributed Perl Documentation   PERLDEBUG(1)
  203.  
  204.  
  205.        within a BEGIN block or a uuuusssseeee statement), these will _N_O_T
  206.        be stopped by debugger, although rrrreeeeqqqquuuuiiiirrrreeees will.  From your
  207.        own code, however, you can transfer control back to the
  208.        debugger using the following statement, which is harmless
  209.        if the debugger is not running:
  210.  
  211.            $$$$DDDDBBBB::::::::ssssiiiinnnngggglllleeee ==== 1111;;;;
  212.  
  213.  
  214.        CCCCuuuussssttttoooommmmiiiizzzzaaaattttiiiioooonnnn
  215.  
  216.        If you want to modify the debugger, copy _p_e_r_l_5_d_b_._p_l from
  217.        the Perl library to another name and modify it as
  218.        necessary.  You'll also want to set environment variable
  219.        PERL5DB to say something like this:
  220.  
  221.            BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee """"mmmmyyyyppppeeeerrrrllll5555ddddbbbb....ppppllll"""" }}}}
  222.  
  223.        You can do some customization by setting up a _._p_e_r_l_d_b file
  224.        which contains initialization code.  For instance, you
  225.        could make aliases like these (the last one in particular
  226.        most people seem to expect to be there):
  227.  
  228.            $$$$DDDDBBBB::::::::aaaalllliiiiaaaassss{{{{''''lllleeeennnn''''}}}} ==== ''''ssss////^^^^lllleeeennnn((((....****))))////pppp lllleeeennnnggggtttthhhh(((($$$$1111))))////'''';;;;
  229.            $$$$DDDDBBBB::::::::aaaalllliiiiaaaassss{{{{''''ssssttttoooopppp''''}}}} ==== ''''ssss////^^^^ssssttttoooopppp ((((aaaatttt||||iiiinnnn))))////bbbb////'''';;;;
  230.            $$$$DDDDBBBB::::::::aaaalllliiiiaaaassss{{{{''''....''''}}}} ==== ''''ssss////^^^^\\\\....////pppp ''''
  231.                            .... ''''""""\\\\$$$$DDDDBBBB::::::::ssssuuuubbbb((((\\\\$$$$DDDDBBBB::::::::ffffiiiilllleeeennnnaaaammmmeeee::::\\\\$$$$DDDDBBBB::::::::lllliiiinnnneeee))))::::\\\\tttt""""''''
  232.                            .... '''',,,,\\\\$$$$DDDDBBBB::::::::ddddbbbblllliiiinnnneeee[[[[\\\\$$$$DDDDBBBB::::::::lllliiiinnnneeee]]]]////'''' ;;;;
  233.  
  234.  
  235.        OOOOtttthhhheeeerrrr rrrreeeessssoooouuuurrrrcccceeeessss
  236.  
  237.        You did try the ----wwww switch, didn't you?
  238.  
  239. BBBBUUUUGGGGSSSS
  240.        If your program _e_x_i_t_(_)s or _d_i_e_(_)s, so does the debugger.
  241.  
  242.        There's no builtin way to restart the debugger without
  243.        exiting and coming back into it.  You could use an alias
  244.        like this:
  245.  
  246.            $$$$DDDDBBBB::::::::aaaalllliiiiaaaassss{{{{''''rrrreeeerrrruuuunnnn''''}}}} ==== ''''eeeexxxxeeeecccc """"ppppeeeerrrrllll ----dddd $$$$DDDDBBBB::::::::ffffiiiilllleeeennnnaaaammmmeeee""""'''';;;;
  247.  
  248.        But you'd lose any pending breakpoint information, and
  249.        that might not be the right path, etc.
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. 18/Oct/94                perl 5.002 with                        4
  263.  
  264.  
  265.