用于表达式计算的.perldb(Perl调试器)中的别名定义';x';不';行不通
我想知道是否有办法在Perl调试器配置文件用于表达式计算的.perldb(Perl调试器)中的别名定义';x';不';行不通,perl,debugging,Perl,Debugging,我想知道是否有办法在Perl调试器配置文件.perldb中为转储表达式的命令x定义别名 以下各种别名定义都不起作用: cat .perldb $DB::alias{ 'x0' } = "x '%states'"; # Does not work $DB::alias{ 'x1' } = 'x %config'; # Does not work $DB::alias{ 'x2' } = '"x %config"';
.perldb
中为转储表达式的命令x
定义别名
以下各种别名定义都不起作用:
cat .perldb
$DB::alias{ 'x0' } = "x '%states'"; # Does not work
$DB::alias{ 'x1' } = 'x %config'; # Does not work
$DB::alias{ 'x2' } = '"x %config"'; # Does not work
$DB::alias{ 'x3' } = 'x "%config, $foo"'; # Does not work
$DB::alias{ 'x4' } = 'x "@L"'; # Does not work
$DB::alias{ 'x5' } = 'x %config, $foo'; # Does not work
$DB::alias{ 'x6' } = '"x %config, $foo"'; # Does not work
$DB::alias{ 'xc' } = 'x %config'; # Does not work
$DB::alias{ 'pFoo1' } = 'print("foo=$var1\n")'; # Works
$DB::alias{ 'pFoo2' } = 'print("$var2\n")'; # Works
$DB::alias{ 'p1' } = 'print "\$_ = $_"'; # Works
$DB::alias{ 'code' } = 's/^.*$/l 1+99999/'; # Works
使用“perl-dscript.pl”启动调试器并使用=
显示别名后,我得到:
code s/^.*$/l 1+99999/
p1 print "\$_ = $_"
pFoo1 print("foo=$var1\n")
pFoo2 print("$var2\n")
x0 x '%states'
x1 x %config
x2 "x %config"
x3 x "%config, $foo"
x4 x "@L"
x5 x %config, $foo
x6 "x %config, $foo"
xc x %config
如果
.perldb
中的别名定义需要特殊语法,或者它不起作用,有什么想法吗?这没有文档记录,但是。也就是说,要按预期工作,别名必须是s//
命令
试试像这样的东西
$DB::alias{ 'x1' } = 's/^.*/x %config/';
令人惊叹的!尽管如此,它只适用于转储单个表达式(即变量)。为了使用别名转储多个表达式,我尝试了以下命令<代码>$DB::别名{'xc3'}='s/^.*/x join“,”,qw($var1$var2)/”代码>但是,输出的格式没有正确设置。因此,使用别名命令的输出给出了
0'FOO,BAR'
x$var1,$var2
,并在调试器外壳中直接调用,给出了两行格式正确的元素0'FOO'1'BAR'
。@Phrosch未测试,但这应该是's/^.*/x\$var1,\$var2/'
。