Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++IDEНовости

Помощь компоновщику: разделение использования памяти DWARF и компоновщика в C ++ Builder 10.4.2

close up lumberjack chopping wood with ax sawdust fly to sides harvesting wood

Компоновщик — это основная часть цепочки инструментов C ++ Builder — в конце концов, это часть, которая собирает выходные данные компилятора и создает ваш окончательный двоичный файл, поэтому трудно недооценить его важность! — и поскольку он объединяет все приложение одновременно, он может использовать много памяти. C ++ Builder 10.4.2 — не первый выпуск, в котором мы ввели улучшения компоновщика: сделав компоновщик распознающим большой адрес , настроив компоновщик для современных типичных приложений и документируя полезные флаги для настройки поведения компоновщика, если вы обнаружите, что компоновщик борется с ваше приложение. (Не говоря уже о добавлении полезных функций, таких как обнаружение сочетаний классических и лязгающих объектов при связывании, что помогает выявить невидимую проблему, влияющую на стабильность времени выполнения вашего приложения, т. е. используйте это, чтобы убедиться, что ваше приложение не содержит распространенной ошибки и является стабильным.)

В C ++ Builder 10.4.2 мы значительно улучшили компоновщик Win64, известный как Split DWARF, который мы переносим в Windows из мира Unix.

Почему странные имена?

Объектные файлы — скомпилированная форма каждой единицы компиляции, то есть каждый файл .cpp — хранятся в разных объектных форматах. В Win64 C ++ Builder использует 64-битный ELF, который обычно используется в Linux. Он расшифровывается как Executable and Linkable Format, но мы подозреваем, что его истинное происхождение принадлежит поклонникам Толкина — потому что вспомогательный формат отладочной информации для хранения отладочной информации для каждого объекта называется DWARF. Это определенно игра слов (см. Страницу 2 этого PDF-файла ).

Split DWARF — это не результат драки в таверне D&D или даже романа Кальвино . Фактически, это способ разделения отладочной информации, чтобы компоновщику не приходилось ее обрабатывать.

Это секрет. Как лучше всего уменьшить объем памяти, необходимый компоновщику при связывании вашего приложения?

Это почти до смешного просто. Давая меньше ссылки.

Разделение отладочной информации

Как правило, при создании приложения в режиме отладки или с любыми модулями с включенной отладочной информацией информация об отладке содержится в объектном файле вместе со скомпилированным кодом. Компоновщик читает оба файла и создает окончательный двоичный файл — ваш EXE или DLL, который также содержит как скомпилированный код, так и отладочную информацию. Это основная причина, по которой отладочный EXE намного больше, чем обычное приложение в режиме выпуска.

Split DWARF обрабатывает объектный файл и разбивает отладочную информацию в отдельный файл, который находится рядом, файл .dwo. В исходном объектном файле остается крошечная заглушка, которую отладчик может прочитать, чтобы узнать, где найти отладочную информацию.

Чтобы включить его, в параметрах проекта выберите «Сборка»> «Компилятор C ++»> «Отладка» и найдите параметр «Использовать разделение DWARF».

10 4 2 split dwarf options cropped

Включи это.

Разверните параметр (щелкните значок>) и выберите абсолютный путь, по которому должна идти отладочная информация, то есть создайте путь, который не является относительным путем, например, начинается с c: или d :. Это необходимо для того, чтобы отладчик мог найти отладочную информацию.

Вот и все. Для получения дополнительной информации вы можете найти нашу документацию здесь . Вы можете использовать новый замечательный отладчик Win64 (с потрясающими функциями, такими как проверка типов STL — после этого блога было добавлено больше), давая вашему компоновщику гораздо меньше возможностей для связывания в C ++ Builder 10.4.2!


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

IN THE ARTICLES