Есть ли способ включить DCU отладки без включения системного блока?

Использование отладочных DCU в Delphi действительно замечательно, за исключением того факта, что системный блок добавляет много накладных расходов на инициализацию/очистку метода (освобождение интерфейсов, очистка массивов, ходовые кадры исключения и т.д.).

Есть ли способ запустить Delphi с отладочными DCU, но без системного блока?

Ответ 1

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

Итак, вы можете создать новый каталог и добавить его в начало списка путей в опции Отладка DCU. В эту директорию установите стандартный System.dcu, который не содержит символов отладки.

Ответ 2

  • Резервное копирование ...\Embarcadero\RAD Studio\10.0\lib\win32\debug\System.dcu
  • Скопировать ...\Embarcadero\RAD Studio\10.0\lib\win32\release\System.dcu в ...\Embarcadero\RAD Studio\10.0\lib\win32\debug\System.dcu
  • Перед применением исправления или обновления в Delphi восстановите исходный файл System.dcu.

Повторите для других форматов: замените win32 на любой из них, в зависимости от версии Delphi, которую вы запускаете.

  • android
  • iosDevice
  • iossimulator
  • osx32
  • win64

Изменить 2:

Повторите для других поддерживаемых языков, кроме английского: замените debug и release на debug\## и release\## для каждого из языков ##, которые вы хотите использовать.

Поддерживаемые языки, которые я знаю:

  • de (немецкий)
  • fr (французский)
  • jp (японский)

Edit:

Этот способ работает хорошо, даже если последовательность установки искажает ваши пути поиска, подобные тому, которые случались со мной более одного раза в эпоху Delphi XE/XE2.

Он отлично работает для любого устройства в ветке release против debug платформ.

Изменить 3:

Если ваша версия Delphi не пострадает от путей библиотек, вы можете использовать предложение Davids с этими шагами:

  • Подготовьте пути, как $(BDSLIB)\$(Platform)\nodebug;$(BDSLIB)\$(Platform)\debug\$(LANGDIR);, к пути DCU Delphi Debug.
  • Скопируйте любой блок на английском языке, который вы не хотите отлаживать от $(BDSLIB)\$(Platform)\release до $(BDSLIB)\$(Platform)\nodebug для всех вышеупомянутых платформ.
  • Скопируйте любой неанглийский блок, который вы не хотите отлаживать от $(BDSLIB)\$(Platform)\release\$(LANGDIR); до $(BDSLIB)\$(Platform)\nodebug\$(LANGDIR); для всех вышеупомянутых платформ.

Каталоги nodebug не обязательно должны находиться в области $(BDSLIB), но очень удобно хранить $(Platform), так как легче поддерживать другие платформы, чем win32.

Я тестировал это с помощью Delphi XE3 и XE5 на всех поддерживаемых платформах, и он работает. В XE и XE2 я иногда шляпа частей пути поиска, переписанных с неправильными значениями, поэтому я предпочитаю первый метод там.

Ниже приведено изображение для Delphi XE3 и OSX.

Он поддерживает английские отладочные DCU и переведенная отладка DCUS.

enter image description here