将参数传递给调试器中的perl文件,并在系统执行的文件中设置断点

时间:2013-07-26 19:00:32

标签: perl debugging system eval

所以我使用perl -d file.pl在perl调试器中运行一个文件。但是file.pl也应该接受参数。我如何提供file.pl的参数 还有一个问题:file.pl中有这一行:

system("./file2.pl");

如果以system运行,有没有办法在file2.pl中设置断点?我在perl调试器上花了7天时间,我无法在file2.pl上设置断点请帮忙

编辑:从DVK获得了一个很棒的响应来添加DB :: single = 1。我在一些文件上测试了它并且它有效。但我有超过100个文件,如果我手动执行此操作,将花费我很多时间。我使用.perldb并使用afterinit来输出所有命令。我已经实现了一个算法,该算法可以找到断点需要去的每个文件的行号。我不能随意(自动使用可执行文件)打开所有这些文件并将DB :: single = 1添加到我喜欢的位置。整个系统可能会崩溃。我想设置断点,因为它更安全

2 个答案:

答案 0 :(得分:3)

是的,你可以。

将以下代码添加到要在file2.pl中打破的行:

$DB::single = 1;

要从该点自动控制调试,您需要操作@DB::typeahead数组。来自perldoc

  

您可以通过向@DB :: typeahead添加任意命令来模拟调试器的TTY输入。例如,您的.perldb文件可能包含:

   sub afterinit { push @DB::typeahead, "b 4", "b 6"; }

此代码可以在BEGIN {}块中,也可以在特殊的.perldb配置文件中。

答案 1 :(得分:0)

你可以像往常一样传递它们:

perl -d ./file2.pl arg1 arg2 arg3 ...