我正在使用大型Perl应用程序,并且每次调用"die"时都希望获得堆栈跟踪.我知道Carp模块,但我不想用'confess'搜索/替换'die'的每个实例.另外,我想要Perl模块或Perl解释器本身的错误的完整堆栈跟踪,显然我不能改变使用Carp的那些.
那么,有没有办法在运行时修改'die'函数,使其表现得像'confess'?或者,是否有一个Perl解释器设置会从'die'中抛出完整的堆栈跟踪?
hob*_*bbs 32
使用Devel :: SimpleTrace或Carp :: Always,他们会做你想要的,而不需要你做任何艰苦的工作.它们具有全局效果,这意味着可以使用例如在命令行上轻松添加它们-MDevel::SimpleTrace
.
mob*_*mob 12
设置__DIE__
信号处理程序怎么样?就像是
$SIG{__DIE__} = sub { Carp::confess @_ };
Run Code Online (Sandbox Code Playgroud)
在脚本的顶部?有关更多信息,请参阅perlvar%SIG.