如何在<中执行`x`命令perl调试器中的动作?

时间:2016-08-25 15:11:57

标签: perl debugging

我希望在调试器中显示提示之前输出一个semicomplex结构。显示它的最佳方法是使用x命令,但命令不能以该名称提供,或者它可能不在范围内。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:9)

请参阅perldebug中的< [command]文档:

  

<强>&LT; [命令]

     

在每个调试器提示符之前设置一个操作(Perl命令)。

x不是Perl命令。你想要{ [command]

  

{[command]

     

在每个调试器提示符之前设置一个动作(调试器命令)。

例如:

$ perl -de'$foo = { foo => "bar" };
           print $foo'

Loading DB routines from perl5db.pl version 1.37
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(-e:1):   $foo = { foo => "bar" };
  DB<1> { x $foo
  DB<2> n
main::(-e:2):   print $foo
auto(-1)  DB<2> x $foo
0  HASH(0x22af2c8)
   'foo' => 'bar'

或者,使用您最喜欢的转储模块(例如Data::DumperData::DumpData::Printer):

$ perl -de'$foo = { foo => "bar" };
           print $foo'

Loading DB routines from perl5db.pl version 1.37
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(-e:1):   $foo = { foo => "bar" };
  DB<1> use Data::Dumper

  DB<2> < print Dumper $foo
  DB<3> n
main::(-e:2):   print $foo
$VAR1 = {
          'foo' => 'bar'
        };