5

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

system("./file2.pl");

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

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

4

2 回答 2

3

是的你可以。

将以下代码添加到要插入的行中file2.pl

$DB::single = 1;

要从那时起自动控制调试,您需要操作@DB::typeahead数组。从perldoc

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

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

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

于 2013-07-26T19:11:10.423 回答
0

你像往常一样传递它们:

perl -d ./file2.pl arg1 arg2 arg3 ...
于 2013-07-26T19:07:25.357 回答