如何强制堆栈回溯Perl中的所有致命错误?
发布时间:2020-12-15 21:21:44 所属栏目:大数据 来源:网络整理
导读:在Perl中,有没有办法强制所有致命的错误显示像Carp :: confess产生的堆栈回溯? 我知道你可以使用警告FATAL = ‘所有’;对目前的词汇范围发出致命的警告。 此外,可以使用$ SIG {__ WARN__} = sub {CORE :: die(@_)};使所有警告都到处死亡(尚未本地化SIGWAR
在Perl中,有没有办法强制所有致命的错误显示像Carp :: confess产生的堆栈回溯?
我知道你可以使用警告FATAL => ‘所有’;对目前的词汇范围发出致命的警告。 此外,可以使用$ SIG {__ WARN__} = sub {CORE :: die(@_)};使所有警告都到处死亡(尚未本地化SIGWARN处理程序)。 有没有干净的方法来做到这一点,还是需要调整SIGDIE?如果我写了一个SIGDIE处理程序,什么是获取跟踪的最佳方式? 一个理想的解决方案可以与标准测试库Test :: More和朋友一起工作。 更新:Mark Johnson建议使用SIGDIE处理程序来调用Carp :: confess。它的效果很好这里是代码: use Carp; $SIG{ __DIE__ } = sub { Carp::confess( @_ ) }; 解决方法
安装一个调用Carp :: confess的SIGDIE处理程序?或者只是设置Carp :: confess作为DIE的处理程序?
小心standard gotchas与eval有关。关于BEGIN块,甚至有weirder gotcha。另请注意ominous warning in perlvar。 有关生成堆栈跟踪的更多信息,请参见this question。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |