如何使用PERLDB_OPTS在运行时运行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:

我有以下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::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