怎么调试perl程序(4) Monday, October 12, 2009

 1步进和运行

调试器一行一行地运行你的程序。下面的命令让你控制什么时候跳过,什么时候停止。
1.1单步s
s EXPR
单步运行程序。也就是说,调试器将执行你的下一行程序,直到到达另外一个语句,必要时步进到子过程里。如果要执行的下一行涉及函数调用,那么调试器将在那个函数的第一行停止。如果使用的 EXPR 里包含一个函数调用,那么它也会单步运行。
1.2单步n
n EXPR
n 命令执行子过程调用但不单步进入它们,直到抵达同层(或者更高层)的下一条语句的开头时停止。如果使用的 EXPR 里包含函数调用,那么会执行那些函数然后在每个语句前面停下来。
1.3回车
如果你只是在调试器提示符上敲回车,那么重复执行前面一条n或者s命令。
1.4.(点)
.(点) 命令返回指向刚刚执行完的行的调试器内部指针,并且打印该行。
1.5r
r 这条命令延续到当前正在执行的子过程返回。如果设置了 PrintRet?选项,它显示返回值,这是缺省。
2            断点
2.1设置断点
b
b LINE
b CONDITION
b LINE CONDITION
b SUBNAME
b SUBNAME CONDITION
b postpone SUBNAME
b postpone SUBNAME CONDITION
b compile SUBNAME
b load FILENAME
1)        B
调试器命令 b 在 LINE 之前设置一个断点,告诉调试器在该点停止程序,这样你就可以检查一番。 如果省略了 LINE,则在将要执行的行上设置断点。如果声明了CONDITION,那么每次到达该语句的时候都会计算它:只有CONDITION为真的时候才会触发一个断点。你只能在一个开始一个执行语句的行上设置断点。请注意这里的条件不用 if:
b 237   $x > 30
b 237   ++$count237 < 11
b 33   /pattern/i
2)        b SUBNAME
在该名字的子过程的第一行前面设置一个(可能是有条件的)断点。SUBNAME 可以是一个包含一个代码引用的变量;如果是这样,则不支持CONDITION。
3)        b postpone
有好几种在还没有编译的代码上设置断点的方法。B postpone形式在编译完SUBNAME 以后,在它的第一行设置一个(可能是有条件的)断点。
4)        b compile
在编译完SUBNAME 后要执行的第一条语句上设置一个断点。请注意和 postpone 形式不同的是,这个语句是在有问题的子过程的外边的,因为该子过程还没有被调用,只是编译了。
5)        b load
在该文件的第一个执行行设置一个断点。FILENAME 应该象那些在 %INC 的值里面的文件一样是全路径名。
2.2取消断点
1)        d LINE 这条命令删除在 LINE 行的断点;如果省略 LINE,它删除将要执行的行的断点。
2)        D 这条命令删除所有断点。
2.3列举断点
L
这条命令列出所有断点和动作。
2.4执行到断点
c LINE

这条命令继续执行,可以在声明的 LINE 处插入一个一次性的断点。

0 comments: