Let*_*_Be 36 debugging perl trace
我在perl中有一个系统脚本.我需要一些等效的bash -x来确定脚本出了什么问题.有没有相当的东西?
编辑:bash -x的作用是它在评估时打印每一行.这使得调试代码只是缺少一些路径变量或文件非常容易.
Cha*_*ens 42
鉴于这个程序命名为w.pl:
#!/usr/bin/perl
use strict;
use warnings;
my $answer = 42;
if ($answer == 6 * 9) {
print "everything is running fine.\n";
} else {
warn "there must be a bug somewhere...\n";
}
Run Code Online (Sandbox Code Playgroud)
您可以Devel::Trace用来观察执行:
perl -d:Trace w.pl
Run Code Online (Sandbox Code Playgroud)
其中产生以下输出:
>> w.pl:6: my $answer = 42;
>> w.pl:8: if ($answer == 6 * 9) {
>> w.pl:11: warn "there must be a bug somewhere...\n";
there must be a bug somewhere...
Run Code Online (Sandbox Code Playgroud)
您应该查看"perl -d"(打开调试器)或"perl -c"(在执行之前检查脚本)
该Devel::DumpTrace模块自2011年开始供货.
样品用法:
$ cat demo.pl
# demo.pl
# a demonstration of Devel::DumpTrace
$a = 1;
$b = 3;
$c = 2 * $a + 7 * $b;
@d = ($a, $b, $c + $b);
$ perl -d:DumpTrace demo.pl
>>>>> demo.pl:3: $a:1 = 1;
>>>>> demo.pl:4: $b:3 = 3;
>>>>> demo.pl:5: $c:23 = 2 * $a:1 + 7 * $b:3;
>>>>> demo.pl:6: @d:(1,3,26) = ($a:1, $b:3, $c:23 + $b:3);
Run Code Online (Sandbox Code Playgroud)