如何在调试器下运行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}
。
- 它必须是加载调试器代码(例如
use Devel::AllSubs
)的完整命令 - 只有当Perl以裸
-d
开关启动时才会检查它 - 只有在Perl启动时才会检查它,因为Perl需要知道它正在调试器下运行脚本以创建进入调试器所需的操作码。
因此,为了将调试器仅应用于部分代码,您需要首先使用-d开关加载它,如下所示
perl -d:AllSubs script.pl
然后使用包变量来决定是否要处理代码。看看你的模块名称我假设你正在尝试对每个子程序做一些事情,所以你的测试可能想要在你的DB::sub
方法中
以上是关于如何在调试器下运行perl代码块?的主要内容,如果未能解决你的问题,请参考以下文章
谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js