ГраницыЧекер
Разработчик(и) | Микро Фокус |
---|---|
Стабильная версия | 12.1.40 / 5 марта 2021 г. |
Операционная система | Окна |
Тип | Профилировщик / отладчик памяти |
Лицензия | Собственное программное обеспечение |
Веб-сайт | www |
BoundsChecker — это инструмент проверки памяти и вызовов API, используемый для C++ разработки программного обеспечения с помощью Microsoft Visual C++ . Он был создан NuMega в начале 1990-х годов. Когда NuMega была приобретена Compuware в 1997 году, BoundsChecker стал частью более крупного набора инструментов DevPartner Studio . Micro Focus приобрела линейку продуктов у Compuware в 2009 году. [1] Сопоставимые инструменты включают Purify , Insure++ и Valgrind .
BoundsChecker можно запускать в двух различных режимах: ActiveCheck , который будет работать с любым приложением как есть, или FinalCheck , который использует инструменты, добавляемые в приложение при его сборке.
ActiveCheck выполняет менее навязчивый анализ и отслеживает все вызовы приложения к библиотеке времени выполнения C , Windows API и вызовы COM-объектов . Отслеживая распределение и освобождение памяти , он может обнаруживать утечки и перерасходы памяти . Мониторинг вызовов API и COM позволяет ActiveCheck проверять параметры, возвраты и исключения и сообщать об исключениях при их возникновении. потоков Взаимоблокировки также могут быть обнаружены путем мониторинга объектов синхронизации и вызовов, что позволяет обнаружить фактические и потенциальные взаимоблокировки.
FinalCheck требует инструментальной сборки и дает гораздо более глубокий, но более интрузивный анализ. Он предоставляет все функции обнаружения ActiveCheck, а также возможность обнаруживать переполнение буфера (чтение и запись) и неинициализированный доступ к памяти . Он отслеживает каждое изменение области действия и отслеживает указатели, ссылающиеся на объекты памяти.
Общий функционал
[ редактировать ]Обнаружение утечек
[ редактировать ]- Отслеживание памяти . Выделение и освобождение памяти отслеживаются на протяжении всего срока службы приложения, а по итогам сеанса создается отчет, показывающий, какие блоки памяти, выделенные пользовательским кодом, остаются выделенными во время обычного завершения процесса. При использовании инструментов компилятора некоторые утечки памяти могут быть объявлены раньше, когда последний указатель, ссылающийся на выделенную блочную память, выходит за пределы области видимости или перезаписывается другим значением. Через эти же механизмы сообщается о попытках использовать указатели на ранее освобожденную память.
- Отслеживание COM-объектов . Создание и уничтожение COM-объектов отслеживается на протяжении всего срока службы приложения, а по итогам сеанса создается отчет, показывающий, какие объекты остаются активными во время обычного завершения процесса.
- Отслеживание ресурсов . Создание и уничтожение дескрипторов системных объектов (например, дескрипторов файлов, дескрипторов GDI и т. д.) отслеживается, а по окончании сеанса создается отчет, показывающий, какие дескрипторы остаются во время обычного завершения процесса.
Проверка вызова API
[ редактировать ]Вызовы API отслеживаются, их входные параметры проверяются до фактического выполнения вызовов функций, предупреждая о возможных проблемах. Коды возврата API также отслеживаются, а коды ошибок регистрируются. Такая проверка ограничена API-интерфейсами, известными BoundsChecker, число которых в настоящее время составляет несколько тысяч. Если отслеживание памяти включено, проверка вызовов API может использовать собранную информацию для более точной проверки указателей памяти.
Обнаружение переполнения памяти
[ редактировать ]Когда включены как отслеживание памяти, так и проверка API, становится возможным обнаруживать многие виды условий переполнения массива и буфера. Инструментарий компилятора расширяет эту возможность. Это особенность, в честь которой продукт был первоначально назван.
Журналирование вызовов API
[ редактировать ]Вызовы API, методов COM и функций .NET Interop можно подробно протоколировать, отмечая значения параметров вызова и результирующие возвращаемые значения. Ценность этой функции ограничена, поскольку нетривиальные приложения часто приводят к тому, что журнал сеанса быстро становится слишком большим.
.NET-анализ
[ редактировать ]Отчет может быть создан с анализом взаимодействия .NET, сборки мусора и активности финализатора на протяжении всего времени тестируемого процесса.
Анализ тупиковых ситуаций
[ редактировать ]Могут быть обнаружены определенные виды смертельных объятий и другие подобные блокировки.
Совместимость
[ редактировать ]Текущая версия (12.1.40) BoundsChecker поддерживает 32- и 64-битные собственные приложения в Windows 10 (весеннее обновление 2020 г.). Среды MS-DOS, 16-битная Windows, Windows 2000, Windows XP и Windows 7 больше не поддерживаются. В составе DevPartner Studio продукт интегрируется с 2017 г. обновлением 15.9.33 2019 г. и обновлением 16.9 [2]
По состоянию на март 2021 года функция анализа взаимоблокировок еще не поддерживается в приложениях X64.
Критика
[ редактировать ]- Лицензирование. С момента поглощения Micro Focus International пакет вызвал критику из-за все более неудобных механизмов лицензирования, с которыми необходимо иметь дело при его установке и использовании. Например, каждый отзыв на сайте интернет-магазина, продающего продукт (кроме отзыва, отправленного одним из его разработчиков), описывает продукт как фактически непригодный для использования из-за способа лицензирования. [3]
- Скорость. Это относительно навязчивый инструмент, который может замедлить работу тестируемого приложения от 50 до 300 раз. Чем больше функций используется одновременно, тем медленнее он работает. Это особенно верно при использовании инструментов компилятора.
- Валюта. Хотя продукт работает со многими версиями Windows и Microsoft Visual Studio, база данных проверки API практически не добавлялась с 2006 года. Более новые API обычно не отслеживаются.
- Переносимость — поддерживаются только Microsoft Windows и Microsoft Visual Studio. Нет поддержки других операционных систем и компиляторов.
- Шум. Сообщается, что многие результаты, хотя и действительны, не очень полезны. Наиболее распространенными из подобных ситуаций являются возвраты ошибок API. Совершенно нормально, что некоторые вызовы API завершаются неудачно. Подобные результаты можно подавить.
История версий
[ редактировать ]- 12.0 — март 2020 г. — новая версия, созданная для последней среды выполнения Visual C/C++ от Microsoft. А также множество других внутренних изменений. [4]
- 11.5.1 — сентябрь 2020 г. — теперь используется установщик WiX Toolset.
- 11.4 HF5 — февраль 2020 г. — Поддержка Visual Studio 2019 16.4.5. Последняя версия для поддержки Windows 7 или более ранней версии или Visual Studio 2015 или более ранней версии.
- 11.4 HF4 — октябрь 2019 г. — поддержка осеннего обновления Windows 10 2019 г. и Visual Studio 2019 16.3.6.
- 11.4 HF3 — май 2019 г. — поддержка весеннего обновления Windows 10 2019 г. и Visual Studio 2019 16.0.3.
- 11.4 HF2 — декабрь 2018 г. — поддержка осеннего обновления Windows 10 2018 г. и Visual Studio 2017 15.9.4.
- 11.4 — ноябрь 2017 г. — Поддержка осеннего обновления Windows 10 2017 г.
- 11.3 HF5 — апрель 2017 г. — поддержка Visual Studio 2017.
- 11.3 — июль 2015 г. — Поддержка Windows 10 и Visual Studio 2015.
- 11.2 — январь 2014 г. — поддержка Windows 8.1, Windows 8.0 и Visual Studio 2013.
- 11.1 — апрель 2013 г. — китайская локализация (кроме онлайн-справки). Различные исправления ошибок.
- 11.0 — сентябрь 2012 г. — Полная поддержка Visual Studio 2012, улучшенная производительность и точность.
- 10.6 — апрель 2012 г. — новая модель лицензирования, средство проверки обновлений продукта, предварительная поддержка Visual Studio 2012 и инструмент на панели задач с монитором активности.
- 10.5 — февраль 2011 г. — поддержка приложений X64 в Windows Vista X64 и более поздних версиях.
- 10.0 — апрель 2010 г. — поддерживает Visual Studio 2010.
- 9.1 — октябрь 2009 г. — поддерживает Windows 7.
- 9.0 — сентябрь 2008 г. — поддерживает Visual Studios 2005 и 2008.
- 8.2 — май 2007 г. — последняя версия с полной поддержкой Visual Studio 6.0 и Visual Studio .NET 2003.
- 6.0 — 1998 г. — первая версия после приобретения NuMega компанией Compuware.
- 5.0 – март 1997 г.
- 4.0 — 1996 — Представлена функция проверки API.
- 2.0 для DOS — март 1991 г. [5]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Официальный сайт Micro Focus DevPartner.
- ^ «Технические характеристики DevPartner» . Архивировано из оригинала 20 сентября 2017 г. Проверено 18 мая 2017 г.
- ^ «Приложения для анализа кода и метрик — бестселлеры» .
- ^ «20+ лучших инструментов обнаружения утечек памяти для Java и C++» . Помощь по тестированию программного обеспечения . Проверено 20 февраля 2022 г.
- ^ InfoWorld, 4 марта 1991 г., стр. 19.