如何调试正在运行的perl进程?

时间:2014-07-21 07:51:45

标签: perl debugging webserver cgi

我刚开始维护一个使用perl作为CGI脚本语言的旧系统。 我知道我可以使用perl -d programName.pl来调试perl脚本,但是如何调试 一个正在运行的perl进程?

2 个答案:

答案 0 :(得分:1)

您可以在任何进程中使用strace命令监视系统调用,例如对于perl进程也是如此。

您也可以使用Enbugger。来自doc:

  

允许在运行时使用调试器,无论您是否使用   进程是从调试开始的。如果您愿意,这很有用   添加钩子,以便在某种事件或UNIX上加载调试器   信号,或者由于某种原因,您在运行时遇到困难   在编译时打开调试程序。

但老实说,我自己从未使用它,所以不能告诉你更多关于它的事情。

您确定需要调试正在运行的脚本吗?

特别是在CGI脚本中(很多时候都不是持久的)并且从每个请求开始,更容易添加一些debug prints作为@Josh如上所述。

或者您可以使用许多开发人员模块,例如Devel :: Trace等(请查看metacpan.org)。

答案 1 :(得分:0)

在这样的情况下,在我的perl脚本中我做

print STDERR "DB8 my comment";

然后我做

cat /var/www/log/error.log | grep DB8

当然,DB8可以是任何唯一的字符串。