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



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

system("./file2.pl");

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

编辑:DVK对添加DB::single=1的反应非常好。我在一些文件上测试了一下,结果成功了。但我有100多个文件,如果我手动完成,这将花费我很多时间。我使用.perldb和afterinit来提前键入所有命令。我已经制定了一个算法,可以找到断点所在的每个文件的行号。我只是不能随机(自动使用可执行文件)打开所有这些文件并将DB::single=1添加到我喜欢的位置。整个系统可能会崩溃。我想设置断点,因为它更安全

可以。

file2.pl:中要中断的行中添加以下代码

$DB::single = 1;

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

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

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

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

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

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

相关内容

最新更新