W języku Perl istnieje sposób na wymuszenie wszystkich błędów krytycznych, aby wyświetlić ślad stosu, taki jak Carp::confess
?Jak wymusić śledzenie stosu dla wszystkich błędów krytycznych w Perlu?
Wiem, że możesz zrobić use warnings FATAL => 'all';
, aby ostrzeżenia były śmiertelne w stosunku do aktualnego zakresu leksykalnego.
Co więcej, możliwe jest użycie $SIG{__WARN__} = sub { CORE::die(@_) };
, aby wszystkie ostrzeżenia były śmiertelne wszędzie (nie zlokalizowały programu obsługi SIGWARN).
Czy jest to czysty sposób, czy muszę zmodyfikować SIGDIE? A jeśli piszę program obsługi SIGDIE, jaki jest najlepszy sposób na uzyskanie śladu?
Idealne rozwiązanie działa ze standardowymi bibliotekami testowymi, Test::More
i znajomymi.
Aktualizacja: Mark Johnson sugeruje użycie programu obsługi SIGDIE do wywołania Carp::confess
. Działa ładnie. Oto kod:
use Carp;
$SIG{ __DIE__ } = sub { Carp::confess(@_) };
To samo pytanie, więcej odpowiedzi: [Jak mogę wymienić wszystkie "umieść z" wyznaniem "w aplikacji Perla?] (Http://stackoverflow.com/q/1877638/269126) – Lumi