Как заставить ВМ Python печатать трассировку стека? - PullRequest
8 голосов
/ 30 января 2010

Я имею дело с написанным на Python сервером, который блокируется и перестает работать, включая ведение журнала. Интересно, есть ли Python, эквивалентный сигналу Java "kill -3", который хотя бы печатает текущую трассировку стека.

Ответы [ 3 ]

7 голосов
/ 15 января 2014

Используйте модуль faulthandler . https://pypi.python.org/pypi/faulthandler/

import faulthandler
faulthandler.register(signal.SIGUSR1)

Это работает вне обработки сигналов цикла интерпретатора Python на уровне C, поэтому оно будет работать, даже если сам интерпретатор Python зависает в ожидании чего-то другого.

Смотри также: http://docs.python.org/dev/library/faulthandler

2 голосов
/ 30 января 2010
import signal, traceback
def quit_handler(signum,frame):
    traceback.print_stack()
signal.signal(signal.SIGQUIT,quit_handler)
0 голосов
/ 30 января 2010

Вы можете найти решение (только для Unix) в этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...