Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с отладкой com-сервера 
V
    Опции темы
DevoL
Дата 22.10.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Доброго всем дня.

Работаю в Delphi 7. Есть com-сервер и клиент. В проекте с dll в Run -> Parameters -> Host Application выбираю своего клиента, жму F9, жму на клиентскую кнопочку по которой отрабатывает реализация функции одного из интерфейсов, в результате чего через некоторое время появляется окошко с информацией о том, что функция отработала и как бы все хорошо. Плохо то, что несмотря на брекпойнт поставленный в реализации этой функции, управление на него не передается в связи с чем отладка становится невозможна.

В настройках проекта оптимизация отключена, секция Debugging заполнена полностью, галочки в EXE and DLL options проставлены.
В Tools -> Debugger Options -> General стоит только одна галочка в Show Inherited. Stop on Delphi Exceptions отключена.

Для сравнения потестил исходники которые идут вместе с книгой Кэнту к главе в которой рассказывается про com. Там все отлично - управление в отмеченных местах переходит в точки останова. Как думаете куда стоит копать?

Спасибо.
PM MAIL   Вверх
DevoL
Дата 22.10.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Решил поэкспериментировать. Включил Tools -> Debugger Options -> General -> Enable COM cross-process support (от активности других ни холодно, ни жарко). Стартанул проект с сервером. Вылез CPU (process dllhost.exe), я пробежался F9 до конца, после чего нажал в клиенте на заветную кнопочку и управление передалось таки в реализацию. Вау. Закрыл все и запустил еще раз. Снова CPU, но в этот раз управление перешло в ntdll.RtlExitUserThread и, видимо, погибло там смертью храбрых, потому как делфи зависла, клиент завис, диспетчер не открывается, хотя что-то там все-таки слишком активно работало, т.к. можно было к примеру по альттабу переключиться на открытый текстовый файл, но происходило это крайне медленно. Перезагрузка и новая попытка отладки. Первый раз тож самое, хотя CPU удалось закрыть вместе с дельфи, несмотря на то, что она ругалась при этом на ряд bpl, во второй раз все снова конкретно подвисло и пришлось перезагружаться. После 5 повторов каждый из которых рано или поздно приводил к необходимости перезагрузки ситуация принципиально не изменилась. Странно, что самая первая попытка увенчалась успехом, тогда как все последующие не дали положительного результата.
PM MAIL   Вверх
DevoL
Дата 25.10.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Как оказалось нужно было немного докрутить.
В проекте с dll с com в Run -> Parameters -> Host Application выбираю клиента, жму F9. Запускается клиент. Жму на кнопку, которая запускает сервер. После этого иду в Run -> Attach to Process где в списке процессов появлется dllhost.exe - системный процесс, в адресное пространство которого загружается dll, содержащая com-объект. Выделяю в списке dllhost.exe, жму кнопку Attach. Только после этого в реализации функций интерфейса отобразятся точки останова и соответственно управление может быть передано на одну из них.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0393 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.