Причина прекращения обслуживания - PullRequest
4 голосов
/ 08 апреля 2010

Я использую сервисное приложение, которое я создал в Delphi. Моя проблема в том, что иногда он прерывается операционной системой, и я не знаю, почему это происходит.

Когда я перехожу к системным событиям, я могу найти такую ​​информацию, как эта:

КОД события: 7034 , Служба [...] неожиданно прервана. Он сделал это [...] раз (а).

Я знаю, что вы не можете дать мне ответ, почему это происходит, но не могли бы вы дать мне подсказку, на что обратить внимание, чтобы найти причину такого поведения? Например, какие исключения могут заставить ОС закрывать приложение.

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 08 апреля 2010

Сделайте отладочную версию с помощью Eurekalog или MadExcept , и он скажет вам, где он взрывается, как выглядит стек, память и т. Д.

Они также могут автоматически перезапустить ваше приложение.Не уверен, что это можно сделать на службе, но для обычных приложений это возможно.Они также могут отправить вам дамп по электронной почте или даже отправить прямо на баг-трекер, такой как FogBugz или Mantis.Эти меры будут полезны в том случае, если вы сразу не найдете пистолет для курения, и вам необходимо продолжать устранение неполадок / отладку как долгосрочное решение.то есть, даже если что-то выходит из строя раз в месяц или даже раз в год, вашему боссу легче сказать: «Я смотрю на логи», чем «Я действительно понятия не имею».

3 голосов
/ 08 апреля 2010

Убедитесь, что вы захватываете все исключения в методе Execute всех ваших потоков (при условии, что вы используете потомков TThread).Если какой-либо из них попадет в ОС, это может привести к прекращению вашего обслуживания.

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