perl调试器输出到文件(Windows)

时间:2013-03-27 08:29:29

标签: perl debugging

我尝试使用perl调试器列出脚本的所有子例程,并将结果放在外部文件中。但它没有用。

我的代码:

perl -d -S myscript.pl > results.txt
  • -S =列出所有子程序
  • -d = debug perl script

映入眼帘,

2 个答案:

答案 0 :(得分:1)

-S不应该用作命令行开关。运行perl -d将启动调试程序进程,您可以使用其中一个命令S

示例:

$ perl -d tmp/splithttpdconf.pl 

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(tmp/splithttpdconf.pl:6):        my $basedir = shift;

DB<1> S main::
main::BEGIN
main::debug
main::splitconf

DB<2> 

为了获得所需的输出类型,您可以使用Profiler模块Devel :: DProf。它会将分析器信息输出到一个文件中,该文件可由dprofpp程序读取。这是获取子程序列表的示例:

perl -d:DProf perlscript.pl; dprofpp -T 

如果您只想在自己的脚本中使用子程序,而不是从其他模块加载的子程序,请添加一个grep,例如:

perl -d:DProf perlscript.pl; dprofpp -T | grep main::

虽然对于知道给定程序中存在哪些子程序的特定问题,如果您使用一致的编码样式,那么开始使用grep "sub.*{"可能更容易。

答案 1 :(得分:1)

在您的主目录中,使用以下内容创建名为.perldb的文件:

parse_options("NonStop=1 LineInfo=results.txt AutoTrace=1 frame=2");

然后运行命令

perl -d myscript.pl

如果你想扫描并列出整个子程序是Perl在运行之前看到的:

perl -MO=Deparse -f myscript.pl