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

将perl调试器输出到文件(Windows),perl,debugging,Perl,Debugging,我尝试使用perl调试器列出脚本的所有子例程,并将结果放入外部文件中。但它不起作用 我的代码: perl -d -S myscript.pl > results.txt -S=列出所有子例程 -d=调试perl脚本 问候,不应将-S用作命令行开关。运行perl-d将启动调试器进程,您可以在那里使用的命令之一是S 例如: $ perl -d tmp/splithttpdconf.pl Loading DB routines from perl5db.pl version 1.28

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

我的代码:

perl -d -S myscript.pl > results.txt
  • -S
    =列出所有子例程
  • -d
    =调试perl脚本

问候,

不应将-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> 
如果您只希望在自己的脚本中使用子程序,而不希望从其他模块加载子程序,请向其添加grep,例如:

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

尽管对于知道给定程序中存在哪些子例程的特殊问题,如果使用一致的编码风格,那么从
grep“sub.*{”
开始可能更容易。

在主目录中,创建一个名为.perldb的文件,包含以下内容:

parse_选项(“NonStop=1 LineInfo=results.txt AutoTrace=1 frame=2”);

然后运行命令

perl-d myscript.pl

如果要扫描并列出整个子例程,请参阅Perl在运行之前看到的内容:


perl-MO=Deparse-f myscript.pl
perl-h
-S使用PATH环境变量查找程序文件
。列出所有子例程?从来没有听说过这个switch.TLP,它们将调试器中的命令与命令行开关混淆。感谢您的回答,我的问题是我想执行一个perl调试程序er命令,并在一个命令中直接将结果获取到输出文件中。在您的示例中,我必须执行两个单独的命令,但我无法将结果获取到输出文件中。您好,您需要使用另一个perl模块来实现这一点。我将添加信息。谢谢,它工作了!但是有没有办法将此应用到perl调试的每个命令中r?您好,调试器命令和Devel::DProf之间没有直接的一对一匹配。您需要阅读Devel::DProf的文档以了解如何执行所需操作。
perl -d:DProf perlscript.pl; dprofpp -T | grep main::