如何在调试器下运行Perl代码块?

时间:2019-01-08 11:09:26

标签: perl debugging

我正在为调试器编写测试。

0xFF

如何将调试器应用于

$(OUTDIR)/%: % | $(OUTDIR)
    base64 -w0 $< | sed -E 's#(////)*//8=$$##' | base64 -d > $@

阻止?

我尝试使用subtest "main" => sub { $ENV{PERL5DB} = 'Devel::AllSubs'; my $stderr = capture_stderr { sub foo { bar(); } sub bar { 1; } foo(); }; $ENV{PERL5DB} = ''; is $stderr, "main::foo\nmain::bar"; }; ,但没有效果。

1 个答案:

答案 0 :(得分:4)

您无法按照自己的方式使用$ENV{PERL5DB}

  1. 必须是完整的命令才能加载调试器代码,例如use Devel::AllSubs
  2. 仅在使用裸-d开关启动Perl时才进行检查
  3. 仅当Perl启动时才检查它,因为Perl需要知道它正在调试器下运行脚本来创建进入调试器所需的操作代码。

因此,为了将调试器仅应用于部分代码,您将需要先使用-d开关将其加载,如下所示:

perl -d:AllSubs script.pl

,然后使用包变量来确定是否要处理代码。查看模块名称,我假设您正在尝试对每个子例程进行操作,因此您的测试可能希望包含在您的DB::sub方法中