Как найти текущий шаг, который выполняет запущенный скрипт perl/python?

У меня есть огромный Perl-скрипт, который много раз зависает. Когда он находится в рабочем состоянии, мне нужно выяснить, какой шаг он сейчас выполняет.
Мне не нужен "Devel::Trace" [сущность времени компиляции] , Есть ли что-нибудь вроде strace? которому я могу передать pid сценария, и он покажет мне, что он выполняет во время выполнения. Пожалуйста, дай мне знать.

~ Мандар.


person Mandar Pande    schedule 10.02.2012    source источник


Ответы (2)


Что такое «шаг»?

Вы упомянули strace, а strace отслеживает системные вызовы. Если это то, что вы хотите, используйте strace. Он отлично работает с Perl.

Если вы хотите отследить, какой оператор Perl выполняется, вы можете запустить скрипт в perld, отладчике Perl. Он имеет функцию трассировки. Эта функция также предоставляется Devel::Trace через тривиально простой интерфейс.

(Я понятия не имею, какая у вас проблема с Devel::Trace. Кажется, вы подразумеваете, что он не показывает, какие операторы выполняются по мере их выполнения, но это именно то, что он делает.)

person ikegami    schedule 10.02.2012

Плохая идея загонять себя в угол, где нельзя ни перезапустить программу с отладочными модулями, ни клонировать среду, чтобы поэкспериментировать с ней вне продакшена.

Подумайте дважды и поищите менее рискованные меры, прежде чем внедрять Enbugger отладчик во время выполнения.

person daxim    schedule 10.02.2012