在Perl中,有沒有辦法強制所有致命錯誤顯示堆棧回溯如Carp::confess
產生?如何在Perl中強制堆棧回溯所有致命錯誤?
我知道你可以做use warnings FATAL => 'all';
來使警告在當前詞彙範圍內致命。
此外,有可能使用$SIG{__WARN__} = sub { CORE::die(@_) };
來使所有警告致命的處處(尚未本地化SIGWARN處理程序)。
有沒有一種乾淨的方式來做到這一點,還是我需要調整SIGDIE?如果我確實寫了一個SIGDIE處理程序,那麼獲取跟蹤的最佳方法是什麼?
一個理想的解決方案將與標準測試庫Test::More
和朋友一起工作。
更新:馬克約翰遜建議使用SIGDIE處理函數來調用Carp::confess
。它很好地工作。代碼如下:
use Carp;
$SIG{ __DIE__ } = sub { Carp::confess(@_) };
同樣的問題,更多的答案:[我怎樣才能在Perl應用程序中替換所有的'死'與'承認?](http://stackoverflow.com/q/1877638/269126) – Lumi 2012-04-12 07:08:46