Delphi: Почему «использование отладочных DCU» становится неэффективным, если я использую пакеты в своем проекте? - PullRequest
2 голосов
/ 03 ноября 2008

Я строю проект, который использует систему плагинов JVCL, которая опирается на пакеты Delphi, и с тех пор, как я добавил его в свой проект, отладка превратилась в кошмар, потому что я больше не могу пошагово отслеживать источник любых блоков VCL или RTL. Они все помечены как серые точки в отладчике (когда соответствующие функции вообще появляются в стеке вызовов; иногда я получаю очень странные результаты), и это сводит меня с ума. Кто-нибудь знает, как вернуть мою функциональность DCU отладки? (Помимо очевидного: вырвать весь код, связанный с плагином. Это будет работать , но это не очень поможет.)

Редактировать: Просто чтобы прояснить, я могу проследить что-нибудь еще в моем проекте. Код JVCL. Другие сторонние библиотеки. Мой собственный код Все это прекрасно отображается в отладчике. Только не код Delphi RTL и VCL - то, что опция компилятора «использовать отладочные DCU» должна предоставить вам доступ.

Ответы [ 3 ]

7 голосов
/ 03 ноября 2008

Это работает как задумано.

Когда вы создаете пакеты, вы выполняете код пакета, а не используете какие-либо DCU. Поэтому DCU компилируются, и вы не получаете доступ к Debug DCU.

Вы можете либо полностью отключить пакеты, либо не компилировать с конкретными пакетами, которые вы хотите отлаживать. Вы можете выбрать, какие пакеты использовать или не использовать, а те, которые не используются, будут «отлаживаемыми» с отладочными DCU.

2 голосов
/ 03 ноября 2008

Пакеты - это просто DLL. Вы должны включить отладочную информацию в них, чтобы иметь возможность отлаживать их, что вы и хотите делать. Поэтому вам нужно иметь пакеты DEBUG для VCL и RTL, а не отладку dcus. Отладочный dcus больше не нужен даже при использовании готовых пакетов.

0 голосов
/ 03 ноября 2008

Возможно, DCU устарели, поэтому отладчик не вмешивается в код.

Обычно удаление всех DCU с последующим выполнением Build All исправит это.

Вам может понадобиться удалить DCU в пути поиска, просто чтобы быть уверенным. Сначала сделайте резервную копию ...

...