Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отладка стандартных модулей VCL / RTL / 13 сообщений из 13, страница 1 из 1
18.02.2022, 13:44
    #40135138
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
Кто-нибудь решал вопрос отладки стандартных модулей (например Forms.pas) при условиях:
1. Используется Delphi 2007
2. Приложение скомпилено с BPL-пакетами.

Это реально? Если да, то как? Нагуглить ничего не получилось, максимум, что удалось нарыть: "это реально", но без подробностей.
...
Рейтинг: 0 / 0
18.02.2022, 13:58
    #40135143
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
ставь птицу в опциях компиляции "Use Debug DCU"
...
Рейтинг: 0 / 0
18.02.2022, 14:26
    #40135151
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
DmSer
Кто-нибудь решал вопрос отладки стандартных модулей (например Forms.pas) при условиях:
1. Используется Delphi 2007
2. Приложение скомпилено с BPL-пакетами.

В D2007 для .bpl поставляются .jdbg, которые отладчик понимает, так что по плану должно работать. Если не работает - это какая-то проблема, её надо искать.

Мимопроходящий
ставь птицу в опциях компиляции "Use Debug DCU"

Эта опция не имеет эффекта для BPL.
...
Рейтинг: 0 / 0
18.02.2022, 16:57
    #40135189
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
GunSmoker,

JCL / JVCL обязательно для этого должны быть установлены? Через них выполняется разбор jdbg?
...
Рейтинг: 0 / 0
18.02.2022, 17:11
    #40135194
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
Нет, они есть в IDE для отладчика.
...
Рейтинг: 0 / 0
20.02.2022, 21:08
    #40135418
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
GunSmoker,

так как отладить BPL?
Создаю пустой проект VCL, ставлю галку "build with runtime packages"
Нужно ли ставить какие-нибудь дополнительные флаги в разделе "compiler" или "linker"?
В разделе "compiler" есть галка "Use debug DCUs". Но она здесь ничем не помогает. А галки "Use debug jdbg" там нет.
Нужно ли в "linker" ставить галку "Include TD32 debug info"?
Нужно ли прописывать дополнительные пути в разделе "Directories / Conditionals"?
Нужно ли дополнительное ПО?

В данный момент необходимости отлаживать BPL нет (она была бы весьма кстати на прошлой неделе).
...
Рейтинг: 0 / 0
21.02.2022, 00:38
    #40135446
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
DmSer
Кто-нибудь решал вопрос отладки стандартных модулей (например Forms.pas) при условиях:

Зачем кому-то вне Борланда отлаживать Forms.pas? Особенно в свете наличия bpl-пакетов (что автоматически подразумевает перекомпиляцию vcl???.bpl и эверест следующих из этого проблем)?

DmSer
Это реально?

Ну, в принципе, если руками собрать vcl.bpl с отладочными опциями ($D+ и т. п.) то, наверное, реально. Если хочется отлаживать дизайн-тайм, потребуется ещё remote debugger или как там его. Но, блин, задлянафига?
...
Рейтинг: 0 / 0
21.02.2022, 10:56
    #40135538
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
Дико извиняюсь, спросонья попутал, проф-деформация. Мимопроходящий частично прав.

*.jdbg даст возможность IDE показать информацию о коде. IDE использует эти файлы, когда в IDE происходит сбой и ей нужно отправить отчёт со стеком вызовов. Также эти файлы может использовать трейсер исключений (EurekaLog, madExcept, JCL) для постройки стека вызовов внутри BPL. Т.е. это файлы для production, где нужно деплоить BPL+jdbg.

Для именно отладочных же целей создаётся *.dcp файл, куда при компиляции пакета складываются все скомпилированные модули пакета - включая всю отладочную информацию. Отладчик может использовать эту информацию в процессе отладки. Т.е. это файлы для design-time: BPL+dcp.

В частности, \lib\win32\debug\rtl.dcp собирается с отладочной информацией, а \lib\win32\release\rtl.dcp - без. Соответственно, если нужно отлаживать системные пакеты - нужно, чтобы отладчик выбирал вариант из папки debug. Что будет выбирать отладчик - зависит от путей поиска. А папка debug как раз добавляется в пути поиска при включении опции "Use Debug DCU". Т.е. если "Use Debug DCU" включена, то debug папка будет в путях поиска и будет использован \lib\win32\debug\rtl.dcp с отладочной инфой.

Уточнить, какой файл используется можно из View / Debug Windows / Modules - напротив rtl.bpl должна быть синяя точка и указан путь \lib\win32\debug\rtl.dcp.

Таким образом, обычно, действительно, нужно просто включить опцию "Use Debug DCU".

Однако в вопросе речь идёт о Delphi 2007, в которой профили пока в зародыше. Папка \lib\debug в Delphi 2007 есть, но никаких отладочных *.dcp в ней нет, а потому отладчик может загрузить только release *.dcp без отладочной информации. Поэтому "из коробки" отлаживать системные BPL в Delphi 2007 нельзя.

Теоретически, можно пересобрать системные пакеты с отладочной информацией, но это не тривиальная задача. Лучше посмотреть в сторону временного отключения сборки с пакетами для отладки. Как вариант - создать свой пакет, куда включить модули из RTL/BPL и линковаться с ним.
...
Рейтинг: 0 / 0
22.02.2022, 00:07
    #40135762
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
GunSmoker,

Спасибо за развёрнутый ответ!
...
Рейтинг: 0 / 0
22.02.2022, 00:12
    #40135766
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
softwarer,

Forms я указал для примера. Проблема у меня была с IBX, разбирался с причинами зависания приложения при ошибке подключения к Firebird. Возникала в рабочем проекте, состоящем их множества DLL, скомпилированных с пакетами.
...
Рейтинг: 0 / 0
22.02.2022, 01:42
    #40135770
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
Не знаю, как в 2007, в D6 и в D7 я всегда просто прописываю в Search path проекта путь к Source\Vcl и спокойно отдаживаю, включая IBX.
Без галки "Use debug dcu".
...
Рейтинг: 0 / 0
22.02.2022, 12:04
    #40135807
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
Речь про пакеты, а не твоё приложение.
...
Рейтинг: 0 / 0
22.02.2022, 12:40
    #40135825
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка стандартных модулей VCL / RTL
GunSmoker
Речь про пакеты, а не твоё приложение.
Да, я не заметил.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отладка стандартных модулей VCL / RTL / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]