-->
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:

T Produce a stack backtrace应该是产生堆栈的信息!
谢谢这位兄弟,呵呵