Поделиться через


Практическое руководство. Отладка приложений служб Windows

Поскольку службы должны выполняться в контексте диспетчера управления службами, а не в контексте Visual Studio, отладка служб не является столь же простой задачей, как отладка других типов приложений Visual Studio. Для отладки службы необходимо запустить службу, а затем подключить отладчик к процессу, в котором она выполняется. После этого можно отлаживать приложение с помощью стандартных средств отладки Visual Studio.

Предупреждение

Не следует подключаться к процессу, если неизвестна его природа и неясны последствия подключения и возможного его уничтожения.Например, при подключении к процессу WinLogon и последующей остановке отладки произойдет остановка системы, поскольку она не может работать без данного процесса.

Отладчик можно подключать только к выполняющейся службе. Процесс подключения прерывает текущую работу службы; строго говоря, он не приостанавливает и не останавливает ее. Так, если служба выполнялась в момент начала отладки, то в процессе отладки технически она все еще находится в запущенном состоянии, однако ее работа приостанавливается.

Подключение к процессу службы позволяет отлаживать большую часть ее кода (но не весь код); поскольку служба уже была запущена, невозможно, например, таким образом отладить код метода OnStart или метода Main, который используется для загрузки службы. Одним из способов обхода этого ограничения является создание в приложении службы второй (временной) службы, предназначенной только для отладки. Можно установить обе службы, а затем для загрузки процесса первой службы запустить эту вспомогательную службу. Сразу после того, как временная служба запустит процесс, для подключения к процессу службы можно воспользоваться меню Отладка Visual Studio.

После подключения к процессу можно установить точки останова и использовать их для отладки кода. Работа с режимом отладки начинается сразу после выхода из диалогового окна, использованного для подключения к процессу. Для запуска, прекращения, остановки и продолжения работы служб может использоваться диспетчер управления службами; при этом будут достигаться точки останова. Позднее, после успешной отладки приложения, эту вспомогательную службу можно удалить.

Примечание

Отладка метода OnStart может быть затруднена, поскольку в диспетчере служб Windows имеется 30-секундное ограничение, распространяющееся на все попытки запуска служб.Дополнительные сведения см. в разделе Разрешение вопросов. Отладка служб Windows.

Чтобы осуществить отладку службы, выполните следующие действия:

  1. Установите службу. Дополнительные сведения см. в разделе Практическое руководство. Установка и удаление служб.

  2. Запустите службу из диспетчера управления службами, обозревателя серверов или программным путем. Дополнительные сведения см. в разделе Практическое руководство. Запуск служб.

  3. В меню Отладка Visual Studio выберите пункт Процессы.

    Откроется диалоговое окно Процессы.

  4. Нажмите кнопку Показать системные процессы.

  5. В разделе Доступные процессы выберите процесс службы и нажмите кнопку Присоединиться.

    Совет

    Процесс будет иметь то же имя, что и исполняемый файл службы.

    Откроется диалоговое окно Присоединение к процессу.

  6. Задайте все необходимые параметры и нажмите кнопку ОК для выхода из диалогового окна.

    Примечание

    Активирован режим отладки.

  7. Установите в коде любые нужные точки останова.

  8. Откройте диспетчер управления службами и поработайте со службой, отправляя ей команды прекращения, остановки и продолжения работы, чтобы воспользоваться точками останова. Дополнительные сведения о запуске диспетчера управления службами см. в разделе Практическое руководство. Запуск служб.

См. также

Задачи

Практическое руководство. Установка и удаление служб

Практическое руководство. Запуск служб

Основные понятия

Знакомство с приложениями служб Windows