如何使用PERLDB_OPTS在运行时运行Perl调试器?
我有以下Perl脚本如何使用PERLDB_OPTS在运行时运行Perl调试器?,perl,debugging,Perl,Debugging,我有以下Perl脚本 #!/usr/bin/env perl sub bar { foo() } sub foo { } sub hello { bar(); } hello(); 它产生以下输出 $ PERLDB_OPTS="NonStop frame=1" perl -d 1.pl > /dev/null Package 1.pl. entering DB::Obj::_init entering main::hello entering main:
#!/usr/bin/env perl
sub bar { foo() }
sub foo { }
sub hello { bar(); }
hello();
它产生以下输出
$ PERLDB_OPTS="NonStop frame=1" perl -d 1.pl > /dev/null
Package 1.pl.
entering DB::Obj::_init
entering main::hello
entering main::bar
entering main::foo
我只需要在调用bar()
函数之前启用调试器。我该怎么做
我所尝试的:
DB::解析_选项
$ cat 1.pl
#!/usr/bin/env perl
sub bar { foo() }
sub foo { }
sub hello {
require Enbugger;
Enbugger->load_debugger();
DB::parse_options("NonStop frame=1");
bar();
Enbugger->stop;
}
hello();
$ perl 1.pl > /dev/null
entering CODE(0x1c551d0)
entering CODE(0x1d23018)
entering strict::import
entering CODE(0x1d23ac8)
Package /usr/lib/x86_64-linux-gnu/perl/5.22/Errno.pm.
entering Errno::TIEHASH
entering CODE(0x1c551b8)
entering CODE(0x1d72b40)
entering strict::import
Package /usr/lib/x86_64-linux-gnu/perl/5.22/Tie/Hash/NamedCapture.pm.
entering XSLoader::load
NonStop = '1'
frame = '1'
entering CODE(0x1bdeca8)
entering warnings::unimport
frame=2
,将会有更多的输出。但输出是错误的,预期结果是:
Package 1.pl.
entering DB::Obj::_init
entering main::bar
entering main::foo
无输出:(目前,我使用了以下方法-使用
-d NonStop frame=0
运行脚本,并将$DB::frame=1
设置在我想要获取堆栈跟踪的位置
$cat 1.pl
!/usr/bin/env perl
子条{foo()}
亚富{}
潜艇你好{
$DB::frame=1;
bar();
$DB::frame=0;
}
你好;
$PERL5OPT=-d PERLDB_OPTS=NonStop perl 1.pl
进入main::bar
输入main::foo
$ cat 1.pl
#!/usr/bin/env perl
sub bar { foo() }
sub foo { }
sub hello {
require "perl5db.pl";
$DB::signal = 1;
bar();
$DB::single = 1;
}
hello();
$ PERLDB_OPTS="NonStop frame=1" perl 1.pl > /dev/null