In Perl, c'è un modo per forzare tutti gli errori fatali a visualizzare uno stack backtrace come produce Carp::confess
?Come impongo uno stack backtrace per tutti gli errori fatali in Perl?
So che si può fare use warnings FATAL => 'all';
per rendere gli avvisi fatali sull'attuale ambito lessicale.
Inoltre è possibile utilizzare $SIG{__WARN__} = sub { CORE::die(@_) };
per rendere irreversibili tutti gli avvisi (che non ha localizzato il gestore SIGWARN).
C'è un modo pulito per farlo o devo modificare SIGDIE? E se scrivo un gestore SIGDIE, qual è il modo migliore per ottenere la traccia?
Una soluzione ideale funzionerebbe con le librerie di test standard, Test::More
e con gli amici.
Aggiornamento: Mark Johnson suggerisce di utilizzare un gestore SIGDIE per chiamare Carp::confess
. Funziona bene. Ecco il codice:
use Carp;
$SIG{ __DIE__ } = sub { Carp::confess(@_) };
Stessa domanda, più risposte: [Come posso sostituire tutti i 'die' con 'confess' in un'applicazione Perl?] (Http://stackoverflow.com/q/1877638/269126) – Lumi