gpt4 book ai didi

perl - 如何为 Perl 中的所有 fatal error 强制执行堆栈回溯?

转载 作者:行者123 更新时间:2023-12-03 11:00:43 26 4
gpt4 key购买 nike

在 Perl 中,有没有办法强制所有 fatal error 显示堆栈回溯,如 Carp::confess生产?
我知道你可以做use warnings FATAL => 'all';使警告在当前词法范围内致命。
此外,可以使用 $SIG{__WARN__} = sub { CORE::die(@_) };使所有警告处处致命(尚未本地化 SIGWARN 处理程序)。
有没有一种干净的方法可以做到这一点,还是我需要调整 SIGDIE?如果我确实编写了一个 SIGDIE 处理程序,那么获取跟踪的最佳方法是什么?
一个理想的解决方案将与标准测试库一起使用,Test::More和 friend 。
更新: Mark Johnson 建议使用 SIGDIE 处理程序来调用 Carp::confess .它工作得很好。这是代码:

use Carp;
$SIG{ __DIE__ } = \&Carp::confess;

最佳答案

安装一个调用 Carp::confess 的 SIGDIE 处理程序?或者只是将 Carp::confess 设置为 DIE 的处理程序?

当心 standard gotchas与评估有关。有一个偶数weirder gotcha关于 BEGIN block 。另请注意 ominous warning in perlvar .

this question有关生成堆栈跟踪的更多信息。

关于perl - 如何为 Perl 中的所有 fatal error 强制执行堆栈回溯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com