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 creado por NuMega a principios de la década de 1990. Cuando Compuware compró NuMega en 1997, BoundsChecker se convirtió en parte de un conjunto de herramientas más grande, DevPartner Studio . Micro Focus compró la línea de productos de Compuware en 2009. [1] Las herramientas comparables incluyen Purify , Insure ++ y Valgrind .
Desarrollador (es) | Enfoque micro |
---|---|
Lanzamiento estable | 12.1.40 / 5 de marzo de 2021 |
Sistema operativo | Ventanas |
Tipo | Analizador / depurador de memoria |
Licencia | Software propietario |
Sitio web | www |
BoundsChecker se puede ejecutar en dos modos distintos: ActiveCheck , que funcionará con cualquier aplicación tal cual, o FinalCheck , que hace uso de la instrumentación agregada a la aplicación cuando se compila .
ActiveCheck realiza un análisis menos intrusivo y supervisa 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 pérdidas y desbordes de memoria . Monitorear las llamadas a API y COM permite a ActiveCheck verificar parámetros, devoluciones y excepciones e informar las excepciones cuando ocurren. Los interbloqueos de subprocesos también se pueden detectar mediante la supervisión de los objetos de sincronización y las llamadas que dan una detección de interbloqueo real y potencial.
FinalCheck requiere una compilación instrumentada y proporciona 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 inicializados . Supervisa 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 código de usuario permanecen asignados en el momento de la terminación normal del proceso. Cuando se utiliza la instrumentación del compilador, algunas pérdidas de memoria se pueden anunciar antes, cuando el último puntero que hace referencia a una memoria de bloque asignada se sale del alcance o se sobrescribe con otro valor. A través de los mismos mecanismos, se informan los intentos de usar punteros a la memoria liberada anteriormente.
- 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 fin de sesión que muestra qué objetos permanecen activos en el momento de la finalización normal del proceso.
- Seguimiento de recursos : se supervisa la creación y destrucción de identificadores de objetos del sistema (como identificadores de archivos, identificadores de GDI, etc.) y se genera un informe de fin de sesión que muestra qué identificadores quedan en el momento de la terminación normal del proceso.
Validación de llamadas a la API
Las llamadas a la API se controlan, sus parámetros de entrada se verifican antes de que se realicen las llamadas a la función, advirtiendo de posibles problemas. Los códigos de retorno de la API también se supervisan y se registran los códigos de error. 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 de API puede hacer uso de la información recopilada para una validación más precisa de los indicadores de memoria.
Detección de desbordamiento de memoria
Cuando se habilitan tanto el seguimiento de la memoria como la validación de API, es posible detectar muchos tipos de condiciones de saturación de la matriz y del búfer. La instrumentación del compilador mejora esta capacidad. Esta es la característica por la que se nombró originalmente el producto.
Registro de llamadas API
Las llamadas a la API, al método COM y a la función de interoperabilidad .NET se pueden registrar en detalle, teniendo en cuenta 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 la sesión se vuelva demasiado grande rápidamente.
Análisis de .NET
Se puede generar un informe analizando la interoperabilidad de .NET, la recolección de basura y la actividad del finalizador durante la vida del proceso bajo prueba.
Análisis de interbloqueo
Se pueden detectar ciertos tipos de abrazos mortales y otros bloqueos similares.
Compatibilidad
La versión actual (12.1.40) de BoundsChecker admite 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 la Actualización 15.9.33 de 2017 y la Actualización 16.9 de 2019 [2]
A partir de marzo de 2021, la función de análisis de interbloqueo aún no es compatible con las aplicaciones X64.
Criticas
- Licencias: desde la adquisición por parte de Micro Focus International , la suite ha atraído críticas debido a los mecanismos de licencia cada vez más incómodos que deben tratarse al instalarla y usarla. Por ejemplo, cada reseña en el sitio de la tienda en línea que vende el producto (aparte de la enviada por uno de sus desarrolladores) describe 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 lento se vuelve. Esto es particularmente cierto cuando se usa 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 agregado significativamente desde 2006. Las API más nuevas generalmente no se monitorean.
- Portabilidad: solo se admiten Microsoft Windows y Microsoft Visual Studio. No hay soporte para otros sistemas operativos ni compiladores.
- Ruido: se informan muchos resultados que, si bien son válidos, no son muy útiles. El más común de este tipo de cosas son las devoluciones de errores de API. Es perfectamente normal que fallen ciertas llamadas a la API. Este tipo de resultados se pueden suprimir.
Historial de versiones
- 12.0 - marzo de 2020: nueva versión creada para el último tiempo de ejecución de Visual C / C ++ de Microsoft. También muchos otros cambios internos.
- 11.5.1 - Septiembre de 2020 - Ahora usa el instalador de 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 la actualización de otoño de Windows 10 2019 y Visual Studio 2019 16.3.6.
- 11.4 HF3 - Mayo de 2019 - Soporte para 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 la actualización Fall Creator de Windows 10 2017.
- 11.3 HF5 - Abril de 2017 - Soporte para 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). Varias correcciones de 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 versiones 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 [4]
Ver también
Referencias
- ^ Sitio oficial de Micro Focus DevPartner
- ^ "Especificaciones técnicas de DevPartner" . Archivado desde el original el 20 de septiembre de 2017 . Consultado el 18 de mayo de 2017 .
- ^ http://www.componentsource.com/products/devpartner-visual-c-boundschecker-suite-visual-studio-named-users/reviews.html
- ^ InfoWorld, 4 de marzo de 1991, página 19