Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.12.2003, 17:15
|
|||
|---|---|---|---|
|
|||
Отладка NT-сервиса и все-все-все |
|||
|
#18+
День добрый, уважаемые! Первый раз в жизни пришлось писать NT-сервис. Пишу на Delphi 5, используя для доступа к Oracle компоненты DOA 3.4.6. Задача сервиса: периодически загружать в БД данные из файлов собственного формата. Что уже работает: почти всё ;), т.е. сервис благополучно запускается, считывает параметры загрузки данных из реестра, стартует процесс загрузки, частично выполняет (90%) и тихонечко срубается :( Вот и возникает ряд вопросов: 1. Как вообще отлаживать сервисы? Прежде всего интересует пошаговая отладка, т.к. разного рода LogMessage() это конечно хорошо, но как то геморойно. 2. Какие есть практические ограничения при написании сервисов, кроме указанного в хелпе "не использовать Forms и Http"? Быть может у кого-либо есть практический опыт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2003, 17:52
|
|||
|---|---|---|---|
Отладка NT-сервиса и все-все-все |
|||
|
#18+
Я при работе службы пишу весь процесс работы (подробный) в текстовой файл. И не отключаю логи даже когда устанавливаю сервис на эксплуатацию, т.к. если допустим спустя месяц служба срубится, то можно будет посмотреть как выполнялся ход работы. А при создании службы я поступаю следующим образом: Пишу обычное приложение с рабочим потоком, который потом будет крутиться у службы. Его тестирую, (можно с пошаговой отладкой). При этом поток и весь другой рабочий код распологаю в отдельном модуле (.pas файле) ну или нескольких модулях. Затем вставляю эти отлаженные модули в свой шаблончик, который создан для служб. Там остается их только подключить, немножечко дописать инициализацию потока и все ок! Если в будущем требуется что то менять в коде, то опять же пишу и отлаживаю в тестовом приложении, затем простое копирование и компиляция службы. p.s. Одна из моих служб тоже загружает в БД данные из текстового файла. Пока никаких проблем (почти) не создает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 07:07
|
|||
|---|---|---|---|
|
|||
Отладка NT-сервиса и все-все-все |
|||
|
#18+
У меня тоже есть тестовое приложение, в котором есть просто 3 кнопки: старт, пауза, стоп. Дык в нём то всё благополучно работает, т.е. поток стартует и, как ему и положено, периодически выполняет свои функции. А когда я на базе тех же модулей собираю сервис, то он сваливается. Отсюда и возникли вопросы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 07:52
|
|||
|---|---|---|---|
Отладка NT-сервиса и все-все-все |
|||
|
#18+
А сервис и база на одной машине висят? Если нет, то сервис должен валиться при попытке соединения с базой (при перезагрузке компа, до логона в домене, у клиента IP - левый). Если сервис нормально работате как тестовое приложение, попробуй: пингани базу (tnsping) из сервиса (в какой-нить файл) и посмотри результат. eNose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 08:10
|
|||
|---|---|---|---|
Отладка NT-сервиса и все-все-все |
|||
|
#18+
может прегодится. я заметил что в сервисе текущая дериктория по умолчанию является не папка откуда стартовал сервис, а WinNT\system32 (D5SP1 Win2000SP4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 08:23
|
|||
|---|---|---|---|
|
|||
Отладка NT-сервиса и все-все-все |
|||
|
#18+
to eNose: сервис и база на разных машинах, но это жить не мешает. прикол то в том, что бОльшая часть работы выполняется, а в конец сервис слетает... мне говрят "надо писать Synchronize!", а чего синхронизировать и с чем я не понимаю ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 08:25
|
|||
|---|---|---|---|
Отладка NT-сервиса и все-все-все |
|||
|
#18+
Во первых необходимо разобраться с безопасностью. Когда у тебя поток стартует из тестового приложения, он работает от имени залогиневшегося пользователя. А когда как служба, то от имени LocalSystem (если ты не указывал пользователя, от которого запускать службу), которая к базе доступа не имеет. Естественно это все применительно для WinNT аудентификации на SQL сервере. Также хотелось бы поподробнее узнать, что сервису удается сделать, т.е. что входит в 90%? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 08:32
|
|||
|---|---|---|---|
|
|||
Отладка NT-сервиса и все-все-все |
|||
|
#18+
безопасность пока никакая ;) при подключении к Oracle используется прямое указание пользователя и пароля. 90% - это значит что почти все данные, которые необходимо закачать в БД, туда попали. Например, надо закачать 2018 записей, 2000 закачиваются, а 18 нет :( У меня уже такое подозрение, что поток просто закрывается раньше чем данные зафиксировались в базе, но что-то не догоняю, как ему сказать подождать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2003, 09:36
|
|||
|---|---|---|---|
Отладка NT-сервиса и все-все-все |
|||
|
#18+
Оберни код потока в обработчик эксепшенов и выводи информацию об ошибке в лог, т.к. если происходит необработанное исключение в потоке, то поток прекращает свою работу, и уже не отзывается ни на какие сообщения. Может у тебя на 2001 строке кривые параметры серверу идут и поток слетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&tablet=1&tid=2115624]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 384ms |

| 0 / 0 |
