Отладка приложений службы Windows — не такая тривиальная задача, как кажется.
Проблема в том, что при отладке приложений такого типа нельзя использовать стандартные инструменты Visual Studio, такие как точки останова и другие полезные инструменты.
Это связано с тем, что приложение службы Windows нельзя запустить с помощью клавиши F5 непосредственно из Visual Studio. Однако MSDN предлагает нам несколько способов их отладки.
Скорее всего, многие разработчики даже не сталкивались с ними, пока не приступили к созданию своего первого сервиса.
Это использование записей журнала событий и технологическое соединение .
Оба эти метода хорошо описаны в MSDN, но позволяют отладить только уже работающий сервис.
Из-за этого код, запускающий сам сервис, в методе OnStart(), не может быть протестирован.
Ниже я хочу рассказать о способе обойти это ограничение и протестировать свой сервис как обычное консольное приложение.
И, следовательно, воспользоваться всем, что предлагает нам для этого Visual Studio.
Сначала нам нужно создать новый проект. Назовем его TestWinService.
это сервис, давайте сразу добавим к нему установщик.
Щелкните правой кнопкой мыши пустую область только что открытого файла и выберите «Добавить установщик».
Теперь давайте добавим в наше решение консольный проект, из которого мы собственно и будем отлаживать наш сервис.
Сразу после создания нового проекта добавим в него две ссылки.
Один для нашей службы TestWinService, другой для System.ServiceProcess, необходимого для вызова службы.
Теперь начинается самое интересное.
Для отладки кода, запускающего службу, нам потребуется создать новый поток, который выполнит всю необходимую работу.
А также два метода — Start() и Stop() для его запуска и завершения.
И, соответственно, будем вызывать их в методах включения и выключения сервиса.
В итоге у нас получится что-то вроде этого.
Вы можете видеть, что мы добавили тестовую строку и установили на ней точку останова.
Теперь добавим в консольное приложение код, который будет эмулировать запуск и остановку службы.
В итоге у нас должно получиться что-то похожее на картинку ниже.
Все готово! Остается только нажать F5 и убедиться, что отладчик остановился на тестовой строке.
Этот метод делает отладку сервисов такой же простой, как и отладку обычного консольного приложения.
Я надеюсь, что это будет кому-то полезно.
Теги: #C++ #служба Windows #отладка #.
NET
-
Приватбанк Раздает Ваучеры Google Adwords
19 Oct, 24 -
Ip Doorbell – Интерактивный Дверной Звонок
19 Oct, 24