Let's say you use a cpan (or otherwise external) module, like our fictional one here Stupid::CPAN::Module::OfSatan
package Stupid::CPAN::Module::OfSatan {
BEGIN { $SIG{__DIE__} = sub { print STDERR "ERROR"; exit; }; }
}
Now later in your code you have something very innocent,
package main {
eval { die 42 };
}
This is going to trigger your buggy signal handler. You're going to want to know where that buggy signal handler is defined, so you'll do something logical like insert a Carp::Always
,
package main {
use Carp::Always;
eval { die 42 };
}
Carp::Always
will then override the buggy signal handler, and your code will magically work. How can you debug where the code is that introduces a buggy signal handler?
question from:
https://stackoverflow.com/questions/65834921/how-do-you-catch-a-buggy-sig-die-handler-if-the-mechanism-to-debug-code-that-eve 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…