отладка службы Windows, добавление журнала базы данных, чтобы поймать плохую идею? - PullRequest
0 голосов
/ 10 декабря 2008

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

Является ли плохой идеей добавить регистрацию ошибок в предложении Catch ()?

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

Ответы [ 4 ]

3 голосов
/ 10 декабря 2008

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

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

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

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

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

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

2 голосов
/ 10 декабря 2008

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

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

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

2 голосов
/ 10 декабря 2008

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

1 голос
/ 10 декабря 2008

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

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