Практическое руководство. Отладка приложений служб Windows
Поскольку службы должны выполняться в контексте диспетчера управления службами, а не в контексте Visual Studio, отладка служб не является столь же простой задачей, как отладка других типов приложений Visual Studio. Для отладки службы необходимо запустить службу, а затем подключить отладчик к процессу, в котором она выполняется. После этого можно отлаживать приложение с помощью стандартных средств отладки Visual Studio.
Предупреждение
Не следует подключаться к процессу, если неизвестна его природа и неясны последствия подключения и возможного его уничтожения.Например, при подключении к процессу WinLogon и последующей остановке отладки произойдет остановка системы, поскольку она не может работать без данного процесса.
Отладчик можно подключать только к выполняющейся службе. Процесс подключения прерывает текущую работу службы; строго говоря, он не приостанавливает и не останавливает ее. Так, если служба выполнялась в момент начала отладки, то в процессе отладки технически она все еще находится в запущенном состоянии, однако ее работа приостанавливается.
Подключение к процессу службы позволяет отлаживать большую часть ее кода (но не весь код); поскольку служба уже была запущена, невозможно, например, таким образом отладить код метода OnStart или метода Main, который используется для загрузки службы. Одним из способов обхода этого ограничения является создание в приложении службы второй (временной) службы, предназначенной только для отладки. Можно установить обе службы, а затем для загрузки процесса первой службы запустить эту вспомогательную службу. Сразу после того, как временная служба запустит процесс, для подключения к процессу службы можно воспользоваться меню Отладка Visual Studio.
После подключения к процессу можно установить точки останова и использовать их для отладки кода. Работа с режимом отладки начинается сразу после выхода из диалогового окна, использованного для подключения к процессу. Для запуска, прекращения, остановки и продолжения работы служб может использоваться диспетчер управления службами; при этом будут достигаться точки останова. Позднее, после успешной отладки приложения, эту вспомогательную службу можно удалить.
Примечание
Отладка метода OnStart может быть затруднена, поскольку в диспетчере служб Windows имеется 30-секундное ограничение, распространяющееся на все попытки запуска служб.Дополнительные сведения см. в разделе Разрешение вопросов. Отладка служб Windows.
Чтобы осуществить отладку службы, выполните следующие действия:
Установите службу. Дополнительные сведения см. в разделе Практическое руководство. Установка и удаление служб.
Запустите службу из диспетчера управления службами, обозревателя серверов или программным путем. Дополнительные сведения см. в разделе Практическое руководство. Запуск служб.
В меню Отладка Visual Studio выберите пункт Процессы.
Откроется диалоговое окно Процессы.
Нажмите кнопку Показать системные процессы.
В разделе Доступные процессы выберите процесс службы и нажмите кнопку Присоединиться.
Совет
Процесс будет иметь то же имя, что и исполняемый файл службы.
Откроется диалоговое окно Присоединение к процессу.
Задайте все необходимые параметры и нажмите кнопку ОК для выхода из диалогового окна.
Примечание
Активирован режим отладки.
Установите в коде любые нужные точки останова.
Откройте диспетчер управления службами и поработайте со службой, отправляя ей команды прекращения, остановки и продолжения работы, чтобы воспользоваться точками останова. Дополнительные сведения о запуске диспетчера управления службами см. в разделе Практическое руководство. Запуск служб.
См. также
Задачи
Практическое руководство. Установка и удаление служб
Практическое руководство. Запуск служб