Articulo de referencia

Comprobador de límites

BoundsChecker es una herramienta de verificación de memoria y validación de llamadas API que se utiliza para el desarrollo de software C++ con Microsoft Visual C++ . Fue creada ...

BoundsChecker es una herramienta de verificación de memoria y validación de llamadas API que se utiliza para el desarrollo de software C++ con Microsoft Visual C++ . Fue creada por NuMega a principios de los años 90. Cuando Compuware compró NuMega en 1997, BoundsChecker pasó a formar parte de un conjunto de herramientas más grande, DevPartner Studio . Micro Focus compró la línea de productos a Compuware en 2009. [1] Las herramientas comparables incluyen Purify , Insure++ y Valgrind .

BoundsChecker se puede ejecutar en dos modos distintos: ActiveCheck , que funcionará con cualquier aplicación tal como está, o FinalCheck , que hace uso de la instrumentación agregada a la aplicación cuando se crea.

ActiveCheck realiza un análisis menos intrusivo y monitorea todas las llamadas de la aplicación a la biblioteca de tiempo de ejecución de C , la API de Windows y las llamadas a objetos COM . Al monitorear las asignaciones y liberaciones de memoria , puede detectar fugas y desbordamientos de memoria. El monitoreo de las llamadas API y COM permite a ActiveCheck verificar parámetros, retornos y excepciones e informar excepciones cuando ocurren. Los bloqueos de subprocesos también se pueden detectar al monitorear los objetos y llamadas de sincronización, lo que brinda detección de bloqueos reales y potenciales.

FinalCheck requiere una compilación instrumentada y ofrece un análisis mucho más profundo pero más intrusivo. Proporciona todas las funciones de detección de ActiveCheck más la capacidad de detectar desbordamientos de búfer (lectura y escritura) y accesos a memoria no inicializada . Monitorea cada cambio de alcance y rastrea punteros que hacen referencia a objetos de memoria.

Funcionalidad general

Detección de fugas

  • Seguimiento de memoria : se realiza un seguimiento de la asignación y liberación de memoria durante la vida útil de la aplicación y se genera un informe de fin de sesión que muestra qué bloques de memoria asignados por el código de usuario permanecen asignados en el momento de la finalización normal de un proceso. Cuando se utiliza la instrumentación del compilador, algunas fugas de memoria se pueden anunciar antes, cuando el último puntero que hace referencia a un bloque de memoria asignado queda fuera del alcance o se sobrescribe con otro valor. A través de los mismos mecanismos, se informan los intentos de utilizar punteros a memoria liberada previamente.
  • Seguimiento de objetos COM : se realiza un seguimiento de la creación y destrucción de objetos COM durante la vida útil de la aplicación y se genera un informe de final de sesión que muestra qué objetos permanecen activos en el momento de la finalización de un proceso normal.
  • Seguimiento de recursos : se supervisa la creación y destrucción de identificadores de objetos del sistema (como identificadores de archivos, identificadores GDI, etc.) y se genera un informe de fin de sesión que muestra qué identificadores permanecen en el momento de la finalización normal del proceso.

Validación de llamadas API

Las llamadas a la API se monitorean, sus parámetros de entrada se verifican antes de que se ejecuten las llamadas a la función, lo que advierte sobre posibles problemas. Los códigos de retorno de la API también se monitorean y los códigos de error se registran. Dicha validación se limita a las API que conoce BoundsChecker, que actualmente son varios miles. Si el seguimiento de memoria está habilitado, la validación de llamadas a la API puede utilizar la información recopilada para una validación más precisa de los punteros de memoria.

Detección de desbordamiento de memoria

Cuando se habilitan tanto el seguimiento de memoria como la validación de API, es posible detectar muchos tipos de condiciones de desbordamiento de búfer y matriz. La instrumentación del compilador mejora esta capacidad. Esta es la característica que dio nombre al producto originalmente.

Registro de llamadas API

Las llamadas a API, métodos COM y funciones de interoperabilidad .NET se pueden registrar en detalle, anotando los valores de los parámetros de llamada y los valores de retorno resultantes. Esta característica tiene un valor limitado, ya que las aplicaciones no triviales a menudo hacen que el registro de sesión se vuelva demasiado grande rápidamente.

Análisis .NET

Se puede generar un informe analizando la interoperabilidad de .NET, la recolección de elementos no utilizados y la actividad del finalizador durante la vida del proceso bajo prueba.

Análisis de bloqueo

Se pueden detectar ciertos tipos de abrazos mortales y otros encierros similares.

Compatibilidad

La versión actual (12.1.40) de BoundsChecker es compatible con aplicaciones nativas de 32 y 64 bits en Windows 10 (actualización de primavera de 2020). Los entornos MS-DOS, Windows de 16 bits, Windows 2000, Windows XP y Windows 7 ya no son compatibles. Como parte de DevPartner Studio , el producto se integra con 2017 Update 15.9.33 y 2019 Update 16.9 [2]

A partir de marzo de 2021, la función de análisis de bloqueo aún no es compatible con aplicaciones X64.

Críticas

  • Licencias: desde que Micro Focus International adquirió el paquete, ha recibido críticas debido a los mecanismos de licencia cada vez más complicados que deben resolverse al instalarlo y usarlo. Por ejemplo, todas las reseñas en el sitio de la tienda en línea que vende el producto (a excepción de una enviada por uno de sus desarrolladores) describen el producto como efectivamente inutilizable debido a la forma en que se manejan las licencias. [3]
  • Velocidad: esta es una herramienta relativamente intrusiva y puede ralentizar la aplicación bajo prueba entre 50 y 300 veces. Cuantas más funciones se utilicen a la vez, más lenta será. Esto es particularmente cierto cuando se utiliza la instrumentación del compilador.
  • Moneda: aunque el producto funciona con muchas versiones de Windows y de Microsoft Visual Studio, la base de datos de validación de API no se ha ampliado significativamente desde 2006. Las API más nuevas generalmente no se monitorean.
  • Portabilidad: solo se admiten Microsoft Windows y Microsoft Visual Studio. No se admiten otros sistemas operativos ni compiladores.
  • Ruido: se informan muchos resultados que, si bien son válidos, no son muy útiles. Los más comunes de este tipo de cosas son los errores de API. Es perfectamente normal que ciertas llamadas a la API fallen. Este tipo de resultados se pueden suprimir.

Historial de versiones

  • 12.0 - Marzo de 2020 - Nueva versión creada para el último entorno de ejecución de Visual C/C++ de Microsoft. También hay muchos otros cambios internos. [4]
  • 11.5.1 - Sep 2020 - Ahora utiliza el instalador WiX Toolset.
  • 11.4 HF5 - Febrero de 2020 - Compatibilidad con Visual Studio 2019 16.4.5. Última versión compatible con Windows 7 o anterior, o Visual Studio 2015 o anterior.
  • 11.4 HF4 - Octubre de 2019 - Compatibilidad con Windows 10 2019 Fall Update y Visual Studio 2019 16.3.6.
  • 11.4 HF3 - Mayo de 2019 - Compatibilidad con Windows 10 2019 Spring Update y Visual Studio 2019 16.0.3.
  • 11.4 HF2 - Diciembre de 2018 - Compatibilidad con Windows 10 2018 Fall Update y Visual Studio 2017 15.9.4.
  • 11.4 - Noviembre de 2017 - Compatibilidad con Windows 10 2017 Fall Creator's Update.
  • 11.3 HF5 - Abril de 2017 - Compatibilidad con Visual Studio 2017.
  • 11.3 - Julio de 2015 - Compatibilidad con Windows 10 y Visual Studio 2015.
  • 11.2 - Enero de 2014 - Compatibilidad con Windows 8.1, Windows 8.0 y Visual Studio 2013.
  • 11.1 - Abril de 2013 - Localización en chino (excluida la ayuda en línea). Corrección de varios errores.
  • 11.0 - Septiembre de 2012 - Compatibilidad total con Visual Studio 2012, rendimiento y precisión mejorados.
  • 10.6 - Abril de 2012 - Nuevo modelo de licencia, verificador de actualizaciones de productos, soporte preliminar para Visual Studio 2012 y herramienta de bandeja del sistema con monitor de actividad.
  • 10.5 - Febrero de 2011 - Admite aplicaciones X64 en Windows Vista X64 y posteriores.
  • 10.0 - Abril de 2010 - Compatible con Visual Studio 2010.
  • 9.1 - Octubre de 2009 - Compatible con Windows 7.
  • 9.0 - Septiembre de 2008 - Compatible con Visual Studios 2005 y 2008.
  • 8.2 - Mayo de 2007 - Última versión con soporte completo para Visual Studio 6.0 y Visual Studio .NET 2003.
  • 6.0 - 1998 - Primera versión después de la adquisición de NuMega por Compuware.
  • 5.0 - Marzo de 1997
  • 4.0 - 1996 - Se introdujo la función de validación de API.
  • 2.0 para DOS - Marzo de 1991 [5]

Véase también

Referencias

  1. ^ Sitio oficial de Micro Focus DevPartner
  2. ^ "Especificaciones técnicas de DevPartner". Archivado desde el original el 20 de septiembre de 2017. Consultado el 18 de mayo de 2017 .
  3. ^ "Aplicaciones de análisis y métricas de código: las más vendidas".
  4. ^ "Las 20 mejores herramientas de detección de fugas de memoria para Java y C++". Ayuda para pruebas de software . Consultado el 20 de febrero de 2022 .
  5. ^ InfoWorld, 4 de marzo de 1991, página 19
Obtenido de "https://es.wikipedia.org/w/index.php?title=BoundsChecker&oldid=1241387132"