Perl Debug

Perl Debug

The concepts of the perl debug are familiar to most programmers. Trace, breakpoint, and conditional breakpoint (watchpoint) are effective means with which to find problems in your perl script.

Common errors in perl

Check for these common errors before you try to debug a program:

  • no semi-colon at end of line.
  • matching pairs of delimiters: ( ), { }, [ ].
  • Using = when you mean ==.
  • Using == when you mean eq.
  • Using == when you mean =~.
  • Disagreement of field, array or hash names (remember $data,$data[1],$data{1} and $Data are four different entities.
  • Disagreement of subroutine names between execution and definition.
  • Incorrect use of if, elsif, else.
  • Not checking your program (and correcting the errors) using the -w switch.

Using the -w switch

perl -w myprogram

Both this useful command and the output from this command are frequently overlooked by experienced programmers. I have, on more than one occasion, spent an hour or 2 looking for a problem when correcting the errors displayed on the -w switch would have corrected or led me to the correction of the problem in a couple of minutes.

The debug command

perl -d myprogram

Essentially the -d switch allows you to communicate with the perl executable, and allows the perl executable to communicate with you.

Stepping up to the plate

  • l - lists the next few lines
  • p [variable name] - lets you print the value of a variable to the command line
  • q - I quit.
  • r - returns from current subroutine
    • If you have written your program as a few subroutines, this is handy for running through each and checking the return.
  • n - executes the next statement at this level
    • Means you don't have to go through those boring subroutine calls. If you don't know what I just wrote, get into a program and try it a couple of times. You'll get the hang of it.
  • s - The step command
    • Okay, this is the key for simple debugging. Crank up your program in the debugger and step through it. If its a small program, this and the r command can take care of most of your needs. By the way, once you enter the s command, just hit enter to repeat the command.

Breaking away

Breakpoints allow you to specify the next stopping point in a program. For example, lets say I know my problems at line 65, I might insert a breakpoint at line 60 and step through the final five lines of code before the problem. You just saved hitting the enter key 60 times.

b - Set a breakpoint

Once you have started the perl debugger you may set a breakpoint at any executable line number.

b 20 - Sets a breakpoint at line 20.
b subroutinename - handy little deviation. If you know the subroutine name, this breaks on the first line inside the routine.
b 20 condition - depending on your background, this is called a conditional breakpoint or watchpoint. Perl breaks when the condition you specify is met.


  • Examples
  • b 20 x>30 Breaks at line 20 when x is greater than 30
  • b 20 x=~/foo/i Breaks at line 20 when x contains "foo"
To start the program use c (continue), which runs the program to the first breakpoint or watchpoint.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值