Релиз Valgrind 3.13.0, инструментария для выявления проблем при работе с памятью
19 июня 2017 года
Доступен релиз Valgrind 3.13.0, инструментария для отладки работы с памятью, обнаружения утечек памяти и профилирования. Работа Valgrind поддерживается для платформ Linux (X86, AMD64 ARM32, ARM64, PPC32, PPC64BE, PPC64LE, S390X, MIPS32, MIPS64), Android (ARM, ARM64, MIPS32, X86),Solaris (X86, AMD64) и macOS 10.12 (AMD64).
В новой версии:
- Проведена работа по обеспечению отладки крупных приложений, потребляющих очень много памяти. Расширен размер кэша. Максимальное число секторов увеличено с 24 до 48, а значение по умолчанию с 16 до 32. Общий размер памяти, который может использовать
Valgrind увеличен с 64 до 128 Гб, т.е. теперь возможна отладка приложений, которым выделено до 60 Гб памяти. Адрес загрузки изменён с 0x3800'0000 на 0x5800'0000, что позволяет загружать крупные исполняемые файлы, размером до 1.2 Гб;
- Добавлена поддержка нового представления трассировок стека - "XTree", при котором раскладка памяти оформляется в виде дерева из трассировок стека и привязанных к ним данных. Поддержка XTree добавлена в утилиты Memcheck, Helgrind и Massif, и может применяться для оценки заполнения кучи в приложении. Для управления формированием отчёта добавлены опции "--xtree-memory=none|allocs|full" и "--xtree-memory-file=file". Отчёт также может быть сгенерирован на лету при помощи команды мониторинга xtmemory в gdbserver. XTree может быть сохранён в двух форматах - callgrind (поддерживается в Memcheck) и massif, которые поддерживаются типовыми инструментами визуализации и анализа, такими как callgrind_annotate, KCachegrind и ms_print;
- Обновлён C++ demangler, декодировщик идентификаторов C++ ABI в оригинальный набор исходных идентификаторов кода C++. Добавлена поддержка декодирования ABI-идентификаторов для языка Rust;
- Устранена утечка памяти при чтении сжатых файлов debuginfo, которая мешала использованию Valgrind с данными debuginfo, созданными в gcc 7.0 при использовании флага "-gz";
- Добавлена поддержка набора инструкций ISA 3.0B для 64-разрядных процессоров POWER (ppc64);
- Для архитектур amd64 и x86 добавлена поддержка CET-префиксов (Control-flow Enforcement Technology) и решены проблемы со сбоем JIT при обработке длинных блоков кода AVX2;
- Для систем arm32 реализованы недостающие инструкции ARMv8;
- Для архитектур arm64, mips64 и mips32 представлена альтернативная реализация инструкций LL (Load-Linked) и SC (Store-Conditional), активируемая при помощи опции "--sim-hints=fallback-llsc" и решающая проблемы с зависаниями в некоторых ситуациях, при использовании реализации, строго соответствующей спецификации LL/SS;
- Улучшена поддержка платформы macOS 10.12;
- На платформе Linux улучшена обработка системного вызова clone в режиме CLONE_VFORK;
- Удалён порт TileGX/Linux, который остался без поддержки и на практике не востребован;
- В Memcheck сокращено число ложных срабатываний при запуске оптимизированного кода, сгенерированного в Clang/LLVM. Добавлена поддержка трассировок xtree (опция "--xtree-memory" и команда 'xtmemory') и рализована опция 'leak_check xtleak' для создания отчёта об утечках в формате xtree;
- В Massif добавлена поддержка трассировок xtree (опция "--xtree-memory" и команда 'xtmemory') и значительно сокращено потребления памяти и процессорных ресурсов;
- В Helgrind добавлена поддержка трассировок xtree (опция "--xtree-memory" и команда 'xtmemory') и возможность обработки клиентских запросов VALGRIND_HG_GNAT_DEPENDENT_MASTER_JOIN, востребованных для программ на языке Ada, скомпилированных компилятором gnat.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.