【发布时间】:2012-02-10 07:46:19
【问题描述】:
我有一个巨大的 Perl 脚本,它多次挂起,当它处于运行状态时,我需要找出它现在正在执行的步骤。
我不想要“Devel::Trace”[编译时实体],有没有类似 strace 的东西?我可以将脚本的 pid 传递给它,它会告诉我它在运行时正在执行什么。请告诉我。
~ 曼达。
【问题讨论】:
我有一个巨大的 Perl 脚本,它多次挂起,当它处于运行状态时,我需要找出它现在正在执行的步骤。
我不想要“Devel::Trace”[编译时实体],有没有类似 strace 的东西?我可以将脚本的 pid 传递给它,它会告诉我它在运行时正在执行什么。请告诉我。
~ 曼达。
【问题讨论】:
什么是“步骤”?
您提到了strace,并且strace 跟踪系统调用。如果这就是您想要的,请使用strace。它与 Perl 完美配合。
如果您想跟踪正在执行的Perl 语句,您可以在Perl 调试器perld 中运行脚本。它具有跟踪功能。这个功能也是Devel::Trace通过一个非常简单的接口提供的。
(我不知道你对 Devel::Trace 有什么问题。你似乎暗示它没有显示在执行时执行了哪些语句,但这正是它所做的。)
【讨论】:
把自己画在一个既不能用调试模块重新启动程序,也不能克隆环境的角落是个坏主意,这样你就可以在生产之外进行试验。
在运行时injecting the Enbugger debugger 之前三思而后行,寻找风险较小的措施。
【讨论】: