Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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 Analysis [ править ]

Можно сгенерировать отчет, анализирующий .NET Interop, сборку мусора и действия финализатора за время существования тестируемого процесса.

Анализ взаимоблокировок [ править ]

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

Совместимость [ править ]

Текущая версия (12.1.40) BoundsChecker поддерживает 32-битные и 64-битные собственные приложения в Windows 10 (весеннее обновление 2020 г.). Среды MS-DOS, 16-разрядная Windows, Windows 2000, Windows XP и Windows 7 больше не поддерживаются. Как часть DevPartner Studio , продукт интегрируется с обновлением 15.9.33 2017 г. и обновлением 16.9 2019 г. [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. А также много других внутренних изменений.
  • 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 . Проверено 18 мая 2017 .
  3. ^ http://www.componentsource.com/products/devpartner-visual-c-boundschecker-suite-visual-studio- named- users / reviews.html
  4. ^ InfoWorld, 4 марта 1991, стр 19