Я пытаюсь сделать что-то вроде этогоКак узнать, какая строка кода была выполняется, когда сигнал получен
$SIG{ALRM} = sub {
print $line_number_when_alarm_went_off;
};
alarm 10;
# rest of the script
Я использую ALRM
в качестве примера, я в конечном итоге с помощью другого сигнал, чтобы убить снаружи, чтобы вызвать его. Есть ли опрятный способ сделать такую операцию?
У меня есть несколько медленных скриптов, и иногда я хотел бы отправить им сигнал, чтобы узнать, где код в данный момент.
Я хочу сделать это как можно более ненавязчивым, чтобы я мог его упаковать и добавить в устаревший код.
Похоже, вы изобретаете профилирование. Вы пробовали [Devel :: NYTProf] (https://metacpan.org/pod/Devel::NYTProf)? – AKHolland
Просто вызовите «Carp :: cluck» в обработчик сигнала и получите всю трассировку стека. – mob
cluck действительно работает. я пробовал признаться раньше, но это не сработало, мне не пришло в голову попробовать. – Nullman