Удобная Отладка Служб Windows

Отладка приложений службы Windows — не такая тривиальная задача, как кажется.

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

Это связано с тем, что приложение службы Windows нельзя запустить с помощью клавиши F5 непосредственно из Visual Studio. Однако MSDN предлагает нам несколько способов их отладки.

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

Это использование записей журнала событий и технологическое соединение .

Оба эти метода хорошо описаны в MSDN, но позволяют отладить только уже работающий сервис.

Из-за этого код, запускающий сам сервис, в методе OnStart(), не может быть протестирован.

Ниже я хочу рассказать о способе обойти это ограничение и протестировать свой сервис как обычное консольное приложение.

И, следовательно, воспользоваться всем, что предлагает нам для этого Visual Studio. Сначала нам нужно создать новый проект. Назовем его TestWinService.

Удобная отладка служб Windows

это сервис, давайте сразу добавим к нему установщик.

Щелкните правой кнопкой мыши пустую область только что открытого файла и выберите «Добавить установщик».



Удобная отладка служб Windows

Теперь давайте добавим в наше решение консольный проект, из которого мы собственно и будем отлаживать наш сервис.

Сразу после создания нового проекта добавим в него две ссылки.

Один для нашей службы TestWinService, другой для System.ServiceProcess, необходимого для вызова службы.



Удобная отладка служб Windows

Теперь начинается самое интересное.

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

А также два метода — Start() и Stop() для его запуска и завершения.

И, соответственно, будем вызывать их в методах включения и выключения сервиса.

В итоге у нас получится что-то вроде этого.



Удобная отладка служб Windows

Вы можете видеть, что мы добавили тестовую строку и установили на ней точку останова.

Теперь добавим в консольное приложение код, который будет эмулировать запуск и остановку службы.

В итоге у нас должно получиться что-то похожее на картинку ниже.



Удобная отладка служб Windows

Все готово! Остается только нажать F5 и убедиться, что отладчик остановился на тестовой строке.



Удобная отладка служб Windows

Этот метод делает отладку сервисов такой же простой, как и отладку обычного консольного приложения.

Я надеюсь, что это будет кому-то полезно.

Теги: #C++ #служба Windows #отладка #.

NET

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.