Определить убийцу процесса - PullRequest
4 голосов
/ 23 марта 2011

Я получил программу на python, работающую в качестве службы Windows, которая, на мой взгляд, перехватывает все исключения. В моей среде разработки я не могу воспроизвести ситуацию, в которой не регистрируется исключение, когда происходит сбой программы. За исключением 2 случаев: программа закрывается через диспетчер задач или я выключаю компьютер.

Однако в целевой среде (Windows 2000 со всеми необходимыми библиотеками и установленным python) служба windows неожиданно завершает работу. 4 минуты после перезагрузки без регистрации каких-либо исключений или причин сбоя. Среда определенно не была отключена.

У кого-нибудь есть предложения, как определить, что убило программу на python?

РЕДАКТИРОВАТЬ: Я не могу использовать отладчик в целевой среде (так как это производственный уровень). Поэтому мне нужен способ записать причину сбоя. Поэтому я ищу инструменты или методы для регистрации дополнительной информации во время выполнения (или времени сбоя), которую можно использовать для посмертного анализа.

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Вы можете также проверить следующие инструменты на sysinternals.com (теперь приобретены MSFT): http://technet.microsoft.com/en-us/sysinternals/bb795533

, например, ProcDump, Process Monitor или даже Process Explorer (но менее адаптированный, чем предыдущие).

Вы также можете установить облегченный отладчик, такой как OllyDbg, или использовать инструменты Moonsols для мониторинга процесса гостевой виртуальной машины, если это произошло в виртуализированной среде.

0 голосов
/ 23 марта 2011

Вам нужно дать больше информации, например "Является ли ваша программа многопоточной?" Зависит ли код от используемой вами версии интерпретатора Python или от любых импортированных модулей, которые отсутствуют в целевой среде?

Если у вас есть GDB для Windows , вы можете выполнить "gdb -p pid", где "pid" - это pid программы, которую вы запускаете. Если происходит сбой, вы можете получить обратную трассировку.

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