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


Выбор оптимального метода отладки приложения-службы

Существует несколько различных способов отладки приложения-службы. Чтобы выбрать правильный метод, сначала необходимо сделать два варианта: время подключения отладчика к приложению-службе и используемой конфигурации отладки.

Существует три этапа, на которых отладчик может быть присоединен к приложению службы:

  • Начало запуска службы. Отладчик автоматически запускается при запуске службы. Выберите этот параметр, если вы хотите отлаживать код инициализации службы.

  • Когда служба впервые сталкивается с исключением. Отладчик автоматически запускается при возникновении исключения или сбоя, или если приложение-служба вызывает функцию DebugBreak. Выберите этот параметр, если вы хотите, чтобы отладчик отображался при возникновении проблемы, но не раньше.

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

Можно выбрать три конфигурации отладки:

  • Локальная отладка. Один отладчик, работающий на том же компьютере, что и служба.

  • Удаленная отладка. Сервер отладки, работающий на том же компьютере, что и служба, управляется с помощью клиента отладки, работающего на втором компьютере.

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

Если служба работает в Windows Vista или более поздней версии Windows, существует одно ограничение на возможность объединения этих вариантов. Если вы хотите выполнить отладку с начала запуска службы или с момента возникновения исключения, необходимо использовать отладку удаленной отладки или отладку в режиме пользователя, управляемого ядром.

Другими словами, нельзя использовать локальную отладку, если вы не планируете подключить отладчик вручную после запуска службы. Это ограничение приводит к тому, что в этих версиях Windows, службы выполняются в сеансе 0, и любой отладчик, автоматически запущенный и подключенный к службе, также находится в сеансе 0 и не имеет пользовательского интерфейса на компьютере, на котором запущена служба.