![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Подскажите пожалуйста , как отлаживать службы в MS Visual Studio ?
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
У каждого сервиса есть хост-файл который этот сервис запускает.
Чаще всего это svhost.exe который находится в папке windows\system32\ К нему можно подключиться и отлаживать свой сервис на здоровье ;-) P.S. Где-то я видел аддон к Менеджеру Задач (Task Manager), который показывает к какому exe-шнику хостится служба ;-) |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
ivashkanet, это ты что-то путаешь. Служба в Windows имеет свой собственный процесс, к которому и надо присоединять отладчик.
WinNet, примерно так: 1. компилириуешь сервис в debug режиме 2. устанавливаешь его и запускаешь как сервис 3. в меню Visual Studio выбираешь: Debug -> Attach to Process... (или Debug -> Processes... в 2003-й студии) и находишь свой сервис А дальше всё зависит от того, что тебе нужно. Это сообщение отредактировал(а) Дрон - 22.3.2007, 19:31 -------------------- Да. Именно так. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Укажи, пожалуйста, где именно Дрон, свой собственный, или они могут делить один процесс на двоих, троих, ....? Можно даже без аддона: Правой на Мой компьютер -- Управление (Managent) -- Сервисы и приложения (Services and Applications) -- Сервисы (Services) Появится список сервисов, нажав на каждый из которых можно увидеть строку его запуска Поехали: .NET Runtime Optimization Service v2.0.50727_X86 --- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe ACU Configuration Service --- C:\WINDOWS\system32\acs.exe Alerter -- C:\WINDOWS\system32\svchost.exe -k LocalService Application Layer Gateway Service --- C:\WINDOWS\System32\alg.exe Application Management --- C:\WINDOWS\system32\svchost.exe -k netsvcs ASP.NET State Service --- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_state.exe Ati HotKey Poller --- C:\WINDOWS\system32\Ati2evxx.exe Automatic Updates --- C:\WINDOWS\system32\svchost.exe -k netsvcs Background Intelligent Transfer Service --- C:\WINDOWS\system32\svchost.exe -k netsvcs Bluetooth Service --- C:\Program Files\ThinkPad\Bluetooth Software\bin\btwdins.exe ........................ Продолжать? Как мы видим служба либо имеет свой запускной файл, либо запускается с C:\WINDOWS\system32\svchost.exe Так в чем же я ошибся, а? Процесс будет именно тот, который запускает нашу службу Это сообщение отредактировал(а) ivashkanet - 22.3.2007, 20:10 |
|||
|
||||
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Не могу запустить сервис так как он тут же останавливается после запуска , наверное по причине какой то ошибки. Для нахождения этой ошибки я хочу выполнить отладку... при отладке (F11) ![]() Или я чего то не понял? |
|||
|
||||
Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Хмм... Да. Похоже всё-таки ты прав, просто мне не приходилось сталкиваться со вторым типом.
Это хуже, тогда так "в лоб" отладить не получится. Как вариант -- вставить в службу обработчики исключений и пусть она пишет в лог о своих ошибках, да и вообще о каждом действии. Кстати, можно сразу попробовать посмотреть в логи через Администрирование -> Просмотр событий. Вдруг там что-то будет. -------------------- Да. Именно так. |
||||
|
|||||
ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
А что если сразу после запуска ввести службу в вечный цикл:
Поставить брэйкпоинт на Sleep, спокойно подключиться, а потом в дебаге изменит значение i Как считаете? Либо еще какой нить вариант с бесконечным циклом (или циклом, чтоб только-только подключиться) и внешним "раздражителем", который этот цикл прервет Это сообщение отредактировал(а) ivashkanet - 22.3.2007, 21:39 |
||||
|
|||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Можно MessageBox вывести в самом начале и приаттачиться к сервису, пока ентот MessageBox будет на экране. Только выводить его надо через WinApi, т.к. дотнетовские сервисы доступа к десктопу не имеют.
Просто сервисы можно делать и как DLL. Тогда они хостятся svchost'ом. Нафиг оно надо только, непонятно ![]() |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 8 Всего: 40 |
совершеннол случайно набрел на этот топик
вариант без геммороя: в OnStart или прямо в main пишем System.Diagnostics.Debugger.Launch(); и ставим брякпоинт. Только надо сильно не задерживаться в теле OnStart -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |