如何在不重新启动Perl调试器中的脚本的情况下重新运行子例程?

Pau*_*han 3 debugging perl

假设我有一种情况,我试图尝试一些Perl代码.

 perl -d foo.pl
Run Code Online (Sandbox Code Playgroud)

Foo.pl认为它是快乐的方式(这是一个很大的脚本),我决定我想重新运行一个特定的子程序并单步执行它,但不重新启动该过程.我该怎么办?

mob*_*mob 5

调试器命令b method在子例程的开头设置断点.

  DB<1> b foo
  DB<2> &foo(12)
main::foo(foo.pl:2):      my ($x) = @_;
  DB<<3>> s
main::foo(foo.pl:3):      $x += 3;
  DB<<3>> s
main::foo(foo.pl:4):      print "x = $x\n";
  DB<<3>> _
Run Code Online (Sandbox Code Playgroud)

有时您可能必须使用包名来限定子例程名称.

  DB<1> use MyModule
  DB<2> b MyModule::MySubroutine
Run Code Online (Sandbox Code Playgroud)