我在非交互模式下运行调试器,输出写入文件。我想在执行时打印出Perl脚本的每一行,但只打印脚本本身的行。我不想看到脚本调用的库代码(File :: Basename,Exporter :: import等)。这似乎应该很容易做到,但perldebug的文档只讨论限制倾销结构的深度。我想要的是什么,如果是的话,怎么样?
请注意,我正在执行我的程序,如下所示:
PERLDB_OPTS="LineInfo=temp.txt NonStop=1 AutoTrace=1 frame=2" perl -dS myprog.pl arg0 arg1
答案 0 :(得分:6)
默认情况下,Devel::DumpTrace
不会进入系统模块,您可以对调试器将进入的模块进行精细控制(这并不容易,但可能)。像
DUMPTRACE_FH=temp.txt perl -d:DumpTrace=quiet myprog.pl
类似于你显然想做的事情。
Devel::DumpTrace
在每一行上也做了很多处理 - 计算变量值并将它们包含在输出中 - 因此它可能过度杀戮并且运行速度比perl -dS ...
慢很多
(Crikey,本周Devel::DumpTrace
{{1}}现在已经two plugs了!)
答案 1 :(得分:1)
您是否在谈论不想跨越您自己的计划之外的功能?为此,您希望使用n
代替s
。
来自perldebug
:
s [expr] Single step. Executes until the beginning of another
statement, descending into subroutine calls. If an
expression is supplied that includes function calls, it too
will be single‐stepped.
n [expr] Next. Executes over subroutine calls, until the beginning
of the next statement. If an expression is supplied that
includes function calls, those functions will be executed
with stops before each statement.