我的Perl程序看起来像:
foo/
foo/bar/
for/bar/test.pm
foo.pm
foo/bar.pm
test.pl
Run Code Online (Sandbox Code Playgroud)
并用于perl test.pl启动该程序.我想在foo/bar/test.pm中调试一个sub.如何在该子上设置断点?
我怎样才能做到这一点?
谢谢.
soc*_*pet 31
要调试perl脚本,请使用-d开关调用调试器.
perl -d test.pl
Run Code Online (Sandbox Code Playgroud)
在调试器中,您可以使用b <line no>在当前文件中设置断点.有时在一个尚未加载或很久以前加载的文件中设置断点是一件麻烦事,所以你也可以放线
$DB::single = 1;
Run Code Online (Sandbox Code Playgroud)
在任何perl程序中的任何地方,调试器在执行该行后会立即中断.这也是在编译时运行的代码中设置断点的好方法(唯一方法?).
ike*_*ami 12
只需使用sub的完全限定名称作为参数b:
b foo::bar::test::subname
Run Code Online (Sandbox Code Playgroud)
例:
$ perl -d -e'use CGI; CGI->new'
...
main::(-e:1): use CGI; CGI->new
DB<1> b CGI::new
DB<2> r
CGI::new(.../CGI.pm:337):
337: my($class,@initializer) = @_;
DB<2> q
Run Code Online (Sandbox Code Playgroud)