BoundsChecker - BoundsChecker

BoundsChecker
Разработчики)Микро Фокус
Стабильный выпуск
12.0.9 / 29 июня 2020
Операционная системаWindows
ТипПрофайлер / Отладчик памяти
ЛицензияПроприетарное программное обеспечение
Интернет сайтwww.microfocus.com/товары/ devpartner/

BoundsChecker это проверка памяти и инструмент проверки вызовов API, используемый для C ++ разработка программного обеспечения с Microsoft Visual C ++. Он был создан NuMega в начале 1990-х гг. Когда NuMega была куплена Compuware в 1997 году BoundsChecker стал частью более крупного набора инструментов, DevPartner Studio. Микро Фокус приобрела линейку продуктов у Compuware в 2009 году.[1] Сопоставимые инструменты включают Очистить, Страхование ++ и Валгринд.

BoundsChecker может работать в двух различных режимах: ActiveCheck, который будет работать с любым приложением как есть, или Окончательная проверка, который использует приборы добавляется в приложение при его создании.

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 Interop, сборку мусора и действия финализатора за время существования тестируемого процесса.

Анализ взаимоблокировок

Могут быть обнаружены определенные виды смертельных объятий и других подобных блокировок.

Совместимость

Текущая версия (12.0.9) BoundsChecker поддерживает 32-битные и 64-битные собственные приложения в Windows 10 (весеннее обновление 2020 г.). Среды MS-DOS, 16-битной Windows, Windows 2000, Windows XP и Windows 7 больше не поддерживаются. Как часть DevPartner Studio, продукт интегрируется с 2017 Обновление 15.9.27 и 2019 Обновление 16.7.4.[2]

По состоянию на сентябрь 2020 года функция анализа взаимоблокировок еще не поддерживается в приложениях 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. А также много других внутренних изменений.
  • 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 Fall Update и Visual Studio 2019 16.3.6.
  • 11.4 HF3 - май 2019 г. - поддержка Windows 10 2019 Spring Update и Visual Studio 2019 16.0.3.
  • 11.4 HF2 - декабрь 2018 г. - поддержка Windows 10 2018 Fall Update и Visual Studio 2017 15.9.4.
  • 11.4 - ноябрь 2017 г. - Поддержка Windows 10 2017 Fall Creator's Update.
  • 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 г.[4]

Смотрите также

Рекомендации

  1. ^ Официальный сайт Micro Focus DevPartner
  2. ^ «Технические характеристики DevPartner». Архивировано из оригинал на 2017-09-20. Получено 2017-05-18.
  3. ^ http://www.componentsource.com/products/devpartner-visual-c-boundschecker-suite-visual-studio- named-users/reviews.html
  4. ^ InfoWorld, 4 марта 1991 г., стр. 19