所以我在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 ...