![]() |
eXeL@B —› Основной форум —› Отладка приложений запускающийхся как сервисы. |
Посл.ответ | Сообщение |
|
Создано: 16 ноября 2005 10:52 · Личное сообщение · #1 |
|
Создано: 16 ноября 2005 11:42 · Личное сообщение · #2 |
|
Создано: 16 ноября 2005 12:08 · Личное сообщение · #3 |
|
Создано: 16 ноября 2005 12:09 · Личное сообщение · #4 |
|
Создано: 16 ноября 2005 12:16 · Личное сообщение · #5 |
|
Создано: 16 ноября 2005 12:27 · Личное сообщение · #6 |
|
Создано: 16 ноября 2005 12:44 · Поправил: Step · Личное сообщение · #7 Tupis Сервис в смысле служба или в смысле COM? Из процесса служба за один заход не делается. Как правило сначала идёт запуск процесса, который сам себя запускает ещё раз но уже как службу. Разница состоит в реакции на сервисную функцию. Если механизм объекта твоего внимания именно такой, то получается что бряк в адресном пространстве базового а не дочернего процесса. Но опять непонятка: тебе что Оля не говорит о завершении процесса? Два процесса висят в памяти? Tupis пишет: но если жать ф12 то управление передается приложению, а не возвращается на функцию вызывающую этот самый мессейджбокс... Чего? Функция то находится в приложении. ![]() |
|
Создано: 16 ноября 2005 12:56 · Поправил: Smon · Личное сообщение · #8 Step пишет: Чего? Функция то находится в приложении. Нет в приложении никаких функций (кроме уникальных(самопальных) естесно) ![]() Step пишет: а не возвращается на функцию вызывающую этот самый мессейджбокс... Должно возвращаться как раз на следующую после вызова функции строку =) ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels ![]() |
|
Создано: 16 ноября 2005 13:04 · Личное сообщение · #9 Smon пишет: Должно возвращаться как раз на следующую после вызова функции строку =) В том то и дело что должно, но возвращает управление приложению.... Step пишет: Но опять непонятка: тебе что Оля не говорит о завершении процесса? Два процесса висят в памяти? В памяти висит два процесса. Оля пришет в строке сообщений "process terminated, exit code0" Причем если перезапустить отладку через ctrl f2, то процесс (приложение) остается в памяти ![]() |
|
Создано: 16 ноября 2005 13:08 · Личное сообщение · #10 |
|
Создано: 16 ноября 2005 13:12 · Личное сообщение · #11 |
|
Создано: 16 ноября 2005 13:18 · Личное сообщение · #12 |
|
Создано: 16 ноября 2005 13:20 · Личное сообщение · #13 Tupis пишет: В том то и дело что должно, но возвращает управление приложению.... Возврат управления приложению - это и есть следующая инструкция после вызова API. Ты видимо имеешь в виду, что отладчик теряет контекст процесса? Детальней, что в окне Айса (нижнем правом углу светится, какой процесс) а что видно по команде ws? Откуда шёл вызов? Для подобных вещей, мелкомягкие создали спец.настройку реестра. Можно запустить отладчик при запуске указанного приложения в автомат.режиме. (Ну прямь для троянов). Это создавалось для отладки служб. Бери Айс, ставь брейк, и ... Есть несколько способов Олей отлаживать сервисы, но лучше без фанатизма. Хотя, возможно я не совсем объективен так как не большой любитель Оли. ![]() |
|
Создано: 16 ноября 2005 13:24 · Личное сообщение · #14 |
|
Создано: 16 ноября 2005 14:24 · Поправил: Step · Личное сообщение · #15 Tupis А вообще dMNt дело говорит. Ставишь Int3 на Original Entry Point а дальше в Оле bp или bpx. По моему это самый простой способ для дебагера 3-его кольца , правда если Оля настроена на один экземпляр (запуск в единичном варианте), то будет чуток не удобно. Но лично я, свои сервисы отлаживал в Айсе и MSVC++. P.S. Есть утилита запуска процесса с правами службы. Так что любой дебагер поддерживающий Attach можно подсоединить. А можно на этот сервис посмотреть? Ты прям заинтриговал. И ещё ты случайно не на Armadillo наткнулся ;) ![]() |
|
Создано: 16 ноября 2005 15:18 · Личное сообщение · #16 |
|
Создано: 16 ноября 2005 19:56 · Личное сообщение · #17 |
|
Создано: 16 ноября 2005 20:53 · Личное сообщение · #18 |
|
Создано: 17 ноября 2005 11:55 · Личное сообщение · #19 Вот собственно: Создать ключ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\SERVICE.EXE" SERVICE.EXE - имя файла службы В нем создем строковый параметр Debugger, значение которого - полный путь к отладчику. Способ работает только для служб, которые запускаются после завершения загрузки системы и настроены на взаимодействие с пользователем (SERVICE_INTERACTIVE_PROCESS). ![]() |
![]() |
eXeL@B —› Основной форум —› Отладка приложений запускающийхся как сервисы. |