Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Вниз

Отладка 


AZ   (2002-01-23 06:36) [0]

Не нашел подходящей ветки - приходится здесь.
Господа, не дадите ли методику отладки свежеиспеченных компонентов при помощи запуска 2-х экземпляров Delphi?



33   (2002-01-23 07:11) [1]

Один экземпляр Delphi управляет печкой, а второй
отлаживает компонент.



Алексей Петров   (2002-01-23 09:27) [2]

Не надо 2-х копий. 99% может быть отлажено путем динамического создания компоненты в тестовом приложении и отладке его.

Ну а остальной 1% лучше писать без ошибок :))



AZ   (2002-01-23 10:25) [3]

>Алексей Петров ©
До сих пор я так и делал. Получалось неплохо.
Но прослышал про вышеуказанный метод м хочу узнать о нем детальнее.



Digitman   (2002-01-23 11:51) [4]

А зачем, по-твоему, конкретно для такой задачи (отладка и тестирование компонента) нужно аж целых 2 экз-ра Делфи ? Ну, я понимаю, кто-то там чего-то брякнул тебе на эту тему без комментариев, но резон-то какой-либо, пусть и призрачный, ты в этом сам видишь ? Или ты хочешь попробовать действовать по принципу : а черт его знает - зачем, но - авось поможет ?



AZ   (2002-01-23 12:38) [5]

Мне надо отлаживать довольно сложный редактор компонента.
Традиционным способом это очень трудоемко.
Чтоб в муках облегченье было...



Виктор Щербаков   (2002-01-23 12:51) [6]

Если один экземпляр Delphi свалится, то второй продолжит работу :)
Но лучше уж сразу штук 5 запустить.



AZ   (2002-01-23 13:31) [7]

Грешно издеваться над мучеником...



Digitman   (2002-01-23 14:24) [8]

"отлаживать довольно сложный редактор компонента" - ну и отлаживай их в одном экз-ре ? На кой черт два-то их нужно ? Разумные аргументы есть ?



vuk   (2002-01-23 15:31) [9]

to Digitman:
>ну и отлаживай их в одном экз-ре ?
А Вы пробовали? Особенно, если редактор компонента использует различные сервисы IDE, которые доступны только в design time.
В этом случае отладка возможна только во втором экземпляре IDE.



Дремучий   (2002-01-23 15:44) [10]

2 vuk
a разве в разных экземплярах Делфи эти сервисы разные?
я понимаю усли нужно отлаживать для 3 идля 5 версии Делфей,
но для одной и той же - прошу пример в студию(извините за плагиат:).



Digitman   (2002-01-23 15:55) [11]

>vuk
Ни одного вразумительного аргумента нет в том, что ты говоришь .. хоть раздел "Потрепаться" зовется, но если ты не потрепаться зашел по сему сабжу, то тогда будь любезен - детали проблемы приводи ... под "сервисом IDE" можно понимать все что угодно ...



vuk   (2002-01-23 16:18) [12]

to Дремучий:
>a разве в разных экземплярах Делфи эти сервисы разные?
Одинаковые, но два разных экземпляра в двух разных экземплярах исполняемого модуля. В этом случае первый экземпляр выступает как внешний отладчик, а второй - как отлаживаемое приложение. Отладчику доступны все данные которые у отлаживаемого приложения внутри.

>под "сервисом IDE" можно понимать все что угодно ...
Например, что-нибудь из модуля LibIntf (до D5 включительно) или ComponentDesigner (D6).

Буквально на днях занимался отладкой редактора свойства. Оттуда и пример.

{$ifdef ver140}
Key := ActiveDesigner.Environment.GetBaseRegKey + "\" +
sIniEditorsName;
{$else}
Key := DelphiIDE.GetBaseRegKey + "\" + sIniEditorsName;
{$endif}



AZ   (2002-01-23 16:26) [13]

>vuk ©
Пожалуйста, нельзя ли поподробнее?



Digitman   (2002-01-23 16:28) [14]

ну, понятно теперь немного ... и что ж тебе мешает отладить свой компонент по очереди для разных конфигураций ? в одном и том же экз-ре IDE сначала отлаживаешь с ver140, а затем - без оного... в чем проблема-то ? тебе надо сравнивать поведение редактора в том и др. случае одновременно что ли ? переключаясь между двумя IDE ? так ведь это совершенно необязательно !



Алексей Петров   (2002-01-23 16:38) [15]

Напрасно вы на человека набросились. Для отладки эксперта, например, я вижу только 2 пути:

а) Загрузка 2-го экземпляра Delphi под отладкой первого (и я это успешно делал, хотя тормозит очень).
б) Запись подробных логов и их анализ - метод старинный, но из за тормозов первого более эффективный.

Как отладить код, выполняющийся в процессе IDE непосредственно из нее самой? На сколько я понимаю структуру Win32 это не возможно - отлаживать можно только другой процесс, но ни как не свой собственный.



Алексей Петров   (2002-01-23 16:39) [16]

Добавлю - саму компоненту так отлаживать смысла нет, а вот к Property Editor или Component Editor сказанное об эксперте относится вполне.



vuk   (2002-01-23 16:42) [17]

>и что ж тебе мешает отладить свой компонент по очереди для
>разных конфигураций ?
Не в конфигурациях дело, а в том, что без второго экземпляра отладка не возможна вообще. Смотрите что получается. Сервисы IDE инициализируются и существуют только внутри IDE Delphi, и даже если Вам удасться скомпилировать вышеуказанный пример (а это можно сделать только при включении пакета DsnIDE50 или DesignIDE), то толку от этого не будет, поскольку работать этот код может только будучи "вживленным" в IDE. Но тут как раз и нарываемся на ограничение - отладчик не может отлаживать сам себя (что и понятно). Вот поэтому и нужен второй экземпляр Delphi.



troits   (2002-01-23 17:02) [18]

>AZ
Я это делал так. (Если я правильно понял, что ты спрашиваешь)
1) Открываешь пакет(*.bpl) c отлаживаемым компонентом в одном экземпляре Delphi.
2) Пишешь в Run->Parameters->Local->Host Application Delphi32.exe с полным путем.
3) Ставишь breakpoint-ы
4) Жмешь Run.



vuk   (2002-01-23 18:01) [19]

to troits:
Я обычно запускаю второй экземпляр, а потом делаю Attach to process. Далее в отладчике вызываю список загруженных модулей, нахожу нужный пакет и все...



AZ   (2002-01-24 05:24) [20]

Большое спасибо.
>Зубоскалам.
Никогда не спешите с выводами, господа!




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.02 c
3-19074           Hawk2                 2002-02-07 10:02  2002.03.07  
Что делать с BDE?


1-19179           konrads               2002-02-18 12:00  2002.03.07  
Картинки JPG, TIFF, GIF и т.п в базах данных


14-19343          evgeg                 2002-01-22 23:58  2002.03.07  
Что в ВУЗ-х стали не на Pascal-е учить, а на C?


4-19397           Dimaond Cat           2002-01-08 00:50  2002.03.07  
SetWindowpos не срабатывает так как надо


3-19047           harismatik            2002-02-06 16:55  2002.03.07  
Аналог команды RecNo в Interbase