My Perl程序如下:
foo/
foo/bar/
for/bar/test.pm
foo.pm
foo/bar.pm
test.pl
并使用perl test.pl
启动该程序。
我想在foo / bar / test.pm中调试一个sub。如何在该子上设置断点?
我该怎么做?
感谢。
答案 0 :(得分:27)
要调试perl脚本,请使用-d
开关调用调试器。
perl -d test.pl
在调试器中,您可以使用b <line no>
在当前文件中设置断点。有时在一个尚未加载或者很久以前加载的文件中设置断点很麻烦,所以你也可以放行
$DB::single = 1;
任何perl程序中的任何地方,调试器在执行该行后会立即中断。这也是在编译时运行的代码中设置断点的好方法(唯一方法?)。
答案 1 :(得分:11)
只需使用sub的完全限定名称作为b
的参数:
b foo::bar::test::subname
示例:
$ 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