使用-d选项进行perl脚本试调

| 评论(2) | 暂无引用通告

-->

h  显示帮助信息

h command  显示command的信息如:

  DB<5> h x
x expr        Evals expression in list context, dumps the result.

p expr 相当于print函数

x [max-dep] expr 假设expr产生的结果为列表,并比较人性的将其打印出,如:

  DB<11> x map $_,(1..5)
0  1
1  2
2  3
3  4
4  5
打印二维数组设定打印深度为2

  DB<16> x 2 ([1,2,3],[4,5,6],[7,8,9])
0  ARRAY(0x8fbb83c)
   0  1
   1  2
   2  3
1  ARRAY(0x8fc4ebc)
   0  4
   1  5
   2  6
2  ARRAY(0x8f50a6c)
   0  7
   1  8
   2  9

 

V [pkg [vars]]打印指定包中的变量,默认打印main包中的变量,注间此处好象只显示包变量面my等声明的词法变量不能显示

#!/usr/bin/perl -w
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;
 

  DB<1> V main year
  DB<2> n
main::(localtime.pl:6): $year+=1900;
  DB<2> v
3
4:      ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;
5
6==>    $year+=1900;
7:      my @month=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
8:      my @week=qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
9:      print "时间: $hour:$min:$sec\n日期: $month[$mon] $mday,$year\n星期: $week[$wday]\n一年中的第$yday天 现在是",($isdst?"晚上":"白天"),"\n";
  DB<2> V main year
$year = 107
 

X [vars]    Same as "V currentpackage [vars]"

y [level [vars]]用于显示词法变量的内容,注意使用此命令需要安装PadWalker

 安装过程如下:

cpan[1]> i /PadWalker/

 Fetching with LWP:
  http://cpan.linuxforum.net/modules/03modlist.data.gz
Going to read /root/.cpan/sources/modules/03modlist.data.gz
Going to write /root/.cpan/Metadata
Distribution    R/RO/ROBIN/PadWalker-1.5.tar.gz
Module    PadWalker              (ROBIN/PadWalker-1.5.tar.gz)
2 items found

cpan[2]> install R/RO/ROBIN/PadWalker-1.5.tar.gz 

 

T    Produce a stack backtrace.产生堆栈信息

 

s    单步执行程序中的一行

n    执行到下一行

此两个命令的区别在于:

s在单步执的过程中可以进入到子例程中,而n则调用子例程并在当前上下文中提供当前程序的下一行

请看下面的示例:

#!/usr/bin/perl
use warnings;
use strict;

sub p {
        print "hello\n";
        print "world;\n";
}

print "begin:\n";
p;
print "over:\n";

调试

使用n的结果

main::(de.pl:10):       print "begin:\n";
  DB<1> n
begin:
main::(de.pl:11):       p;
  DB<1> n
hello
world;
main::(de.pl:12):       print "over:\n";
  DB<1> n
over:

使用s

main::(de.pl:10):       print "begin:\n";
    DB<0> s
begin:
main::(de.pl:11):       p;
    DB<0> s
main::p(de.pl:6):               print "hello\n";
   DB<0> s
hello
main::p(de.pl:7):               print "world;\n";
  DB<0> s
world;
main::(de.pl:12):       print "over:\n";
  DB<0> s
over:

 

暂无引用通告

发送引用通告网址: http://supersun.info/mt/mt-tb.cgi/617
如果您想引用这篇日记到您的Blog,请复制上面的链接,放置到您发表文章时的相应界面中。

评论(2)

T Produce a stack backtrace应该是产生堆栈的信息!

谢谢这位兄弟,呵呵

发表评论

最新资源

  • IMG_1437.JPG
  • line.png
  • bar.png
  • perl_calander.jpg

关于此日记

此日记由 supersun 发表于 2007年4月23日 16:57

此Blog上的上一篇日记根据mp3文件的id3v1标签信息来更改mp3的文件名

此Blog上的下一篇日记Net::Ping的简单使用

首页归档页可以看到最新的日记和所有日记。