Отладка службы Windows, добавление журнала базы данных, чтобы поймать плохую идею?

У меня есть служба Windows, я пытаюсь отладить.

Это плохая идея добавить журнал ошибок в предложении Catch ()?

Моя регистрация использует базу данных для регистрации ошибок между прочим.

10.12.2008 15:13:34
4 ОТВЕТА
РЕШЕНИЕ

Я не уверен на 100%, и что вы пытаетесь сделать, поскольку вы упоминаете как отладку, так и ведение журнала.

Регистрация в предложении catch, как правило, является хорошей идеей, если она является частью общего подхода к регистрации.

если вы после отладки службы, у вас есть два варианта - если вы можете контролировать, когда код, который вы пытаетесь отлаживать извне службы (через некоторый внешний стимул), или если у вас есть некоторое время до выполнения кода, вы можете просто открыть исходный код в VS и, пока вы скомпилировали в режиме отладки, вы можете подключить VS к процессу обслуживания.

Тогда любые точки останова, установленные в вашем исходном коде, дадут вам доступ к коду в отладке.

Однако, если вы не можете этого сделать (например, если вам нужно отладить событие запуска), вы можете добавить System.Diagnostics.Debugger.Break () в исходный код, который будет запускать отладчик, когда эта строка будет нажата во время выполнения. ,

Я обычно оборачиваю такие операторы в элементах управления #if #endif символом компиляции.

3
10.12.2008 15:19:38

Это зависит от кода. На некоторых из моих служб я записываю информацию в базу данных (потому что такова политика), но у меня есть вторичный механизм ведения журнала, который добавляет сообщения в журнал событий в случае сбоя при входе в базу данных. Вопрос, который вы должны задать себе: «Что происходит с ошибками, если вы не можете подключиться к базе данных?»

1
10.12.2008 15:18:25

В службах, за которые я отвечаю, любые ошибки, возникающие после инициализации (после подтверждения кода, он может подключиться к базе данных, имеет доступ к файлу журнала и начинает свою работу), помещается в его файл журнала. Ошибки, возникающие при запуске или завершении работы, отправляются в журнал событий.

2
10.12.2008 15:20:16

В общем, регистрация исключений - хорошая идея. Особенно при отладке сервисов, что всегда является неприятной задачей.

Единственная проблема, с которой вы можете столкнуться, состоит в том, что сама регистрация вызывает исключение. Это случилось со мной, когда я входил в журнал событий (подробности см. В этом вопросе ). Это означает, что вы не получите никакой информации об исключении, которое привело к сбою службы.

Я думаю, что для целей отладки полезно записывать исключения в локальный текстовый файл, в дополнение к любой другой записи в журнал, которую вы делаете. Это наименее вероятно, что потерпит неудачу. Когда вы закончите с отладкой, вы можете удалить эти дополнительные команды регистрации. (Ну, вы должны быть осторожны, чтобы не вносить новую ошибку при этом ...)

2
23.05.2017 11:55:45