在Perl中,是否有一种方法可以强制所有致命错误显示堆栈回溯,就像Carp::confess产生的那样?
我知道你可以使用
use warnings FATAL => 'all';
使当前词法范围内的警告变为致命错误。
此外,还可以使用$SIG{__WARN__} = sub { CORE::die(@_) };
使所有警告在任何地方都变为致命错误(未将SIGWARN处理程序本地化的情况除外)。
有没有一种干净的方法来做到这一点,或者我需要调整SIGDIE?如果我确实编写了一个SIGDIE处理程序,最好的获取跟踪的方法是什么?
一个理想的解决方案将与标准测试库Test::More和朋友一起使用。
更新:Mark Johnson建议使用SIGDIE处理程序调用Carp::confess。它非常有效。这里是代码:use Carp;
$SIG{ __DIE__ } = \&Carp::confess;