在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__ } = sub { Carp::confess( @_ ) };
Run Code Online (Sandbox Code Playgroud) perl ×1