如何在Perl程序中的特定文件上设置断点?

时间:2012-01-19 02:53:57

标签: perl

My Perl程序如下:

foo/
foo/bar/
for/bar/test.pm
foo.pm
foo/bar.pm
test.pl

并使用perl test.pl启动该程序。 我想在foo / bar / test.pm中调试一个sub。如何在该子上设置断点?

我该怎么做?

感谢。

2 个答案:

答案 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