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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在调试器下运行perl代码块?相关的知识,希望对你有一定的参考价值。

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

subtest "main" => sub {
    $ENV{PERL5DB} = 'Devel::AllSubs';
    my $stderr = capture_stderr {
        sub foo { bar(); }
        sub bar { 1; }
        foo();
    };
    $ENV{PERL5DB} = '';
    is $stderr, "main::foo
main::bar";
};

如何应用调试器

{
sub foo { bar(); }
sub bar { 1; }
foo();
}

块?

我试图使用$ENV{PERL5DB}但没有效果。

答案

你不能以你想要的方式使用$ENV{PERL5DB}

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

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

perl -d:AllSubs script.pl

然后使用包变量来决定是否要处理代码。看看你的模块名称我假设你正在尝试对每个子程序做一些事情,所以你的测试可能想要在你的DB::sub方法中

以上是关于如何在调试器下运行perl代码块?的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

Perl:打开还是[代码块]?

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

如何在 Django Summernote 中显示编程片段的代码块?

如何将工作断点设置为常量表达式?

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?