1

我在 Eclipse 中使用 perl 调试器(通过 EPIC 插件)。是否有任何功能可以自动执行这些步骤,直到事件发生。例如,我可以让它运行直到 $args->{some_arg} 设置?如果没有,最知名的解决方法是什么?此功能或解决方法可能类似于调试其他一些类似 C 的语言。

4

3 回答 3

1

在普通的 perl 调试器中,设置$DB::single = 1;会让你进入调试器。所以你可以有以下内容:

  $DB::single = 1 if $args->{some_arg};

我不知道这是否适用于 Eclipse。

于 2014-03-21T01:05:54.833 回答
1

我一直在寻找的东西实际上是遵循所有流程并在满足该条件时停止的东西。但最接近这一点的是所谓的条件断点,正如 Leolo 提到的那样。EPIC 实际上支持这一点,但某些版本在某些版本中有点错误。这样做的方法是在某处设置断点后,右键单击它并在“属性”对话框中设置条件。在有缺陷的版本中,属性是菜单中的第三个选项,没有文本。

在 EPIC 的错误版本中,属性是菜单中的第三个选项,没有文本。

于 2014-03-21T21:00:13.187 回答
0

stock perl 调试器有一个watch w命令。

perl 调试器Devel::Trepan也可以有一个watch命令。

这是一个例子。在文件中test.pl

my $x = 1;
my $y = 2;
my $x = 3;

现在这是一个示例会话:

trepan.pl test.pl
-- main::(test.pl:1 @0x19b5da8)
my $x = 1;
(trepanpl): watch $y
Watch expression 1: $y set
$DB::D[0] = <undef>
(trepanpl): c
Watchpoint 1: $y changed
------------------------
old value   <undef>
new value   2
wa main::(test.pl:3 @0x1b2a5a8)
my $x = 3;
(trepanpl): 

我应该注意关于观察点的一件事。与通常对此功能具有硬件支持的gdb相比,这里的情况并非如此。因此,当您使用它时,您的程序可能会变慢,因为每个可能的停止点都会调用调试器来检查表达式的值是否已更改。

Devel::Trepan还具有 gdb 样式的断点,您可以在其中将条件附加到断点。如果使用观察点会使您的程序减慢太多,请使用它应该更快。

也许有人会为Devel::Trepan编写一个 Eclipse 插件。

于 2015-05-18T16:05:14.257 回答