![Page 1: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/1.jpg)
04/02/03 1
INSURE ++ v6.0INSURE ++ v6.0
Salvador Benimeli Fenollar
Laboratorio de Sistemas de Información
Facultad de InformáticaUniversidad Politécnica de Valencia
![Page 2: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/2.jpg)
04/02/03 2
INTRODUCCION (i)INTRODUCCION (i)
Los errores de corrupción de memoria y de posiciones de memoria no referenciadas pueden llegar a ser extremadamente difíciles de descubrir
Insure ++ examina y testea el código , y produce una serie de informes indicando la localización exacta de los errores.
Ayuda a que los costes de mantenimiento sean menores.
![Page 3: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/3.jpg)
04/02/03 3
INTRODUCCION (ii)INTRODUCCION (ii)
Realiza un análisis de cobertura, indicando claramente que secciones del código han sido testeadas y cuales no.
En resumen, ayuda a evitarnos extensas sesiones de depuración de errores que resultan difíciles de encontrar en tiempo de compilación.
![Page 4: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/4.jpg)
04/02/03 4
INTRODUCCION (iii)INTRODUCCION (iii) Dos de los problemas más serios en la producción de
problemas Software son: el tiempo que se emplea en la “depuración” del producto y el número de “bugs” que no son detectados durante la fase de pruebas.
Insure ++ trata : Corrupción de memoria debido a escrituras o
lecturas del variables globales, locales... Operaciones sobre punteros ilegales Lectura de variables no inicializadas Memory leaks Errores de asignación y liberación memoria
dinámica.
![Page 5: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/5.jpg)
04/02/03 5
ANÁLISIS DE COBERTURAANÁLISIS DE COBERTURA
Análisis de Cobertura con TCA Total Coverage Analysis (TCA) integrado en
Insure+++ muestra que partes del código han sido testeadas y cuales no.
La finalidad de los test de cobertura es analizar cuantas funciones y instrucciones han sido ejecutadas.
![Page 6: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/6.jpg)
04/02/03 6
ANÁLISIS DE COBERTURAANÁLISIS DE COBERTURA
Con TCA, nos podemos ahorrar mucho tiempo, evitándonos testear una y otra vez las mismas partes del código y empezar con las que realmente no han sido probadas.
Ayuda al usuario modificar los procedimientos de test para cubrir todas las partes
![Page 7: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/7.jpg)
04/02/03 7
INUSEINUSE
Herramienta grafica diseñada para ayudar a evitar problemas de memoria, mostrando en tiempo real el uso de memoria que hace nuestra aplicación. Sabemos con certeza como nuestro programa
asigna y libera los bloques de memoria dinámica, lo que puede ayudarnos o optimizarla.
También nos ayuda a : Saber cuanta memoria usa nuestra aplicación
en función de eventos de usuario Determinar si diferentes estrategias de
asignación pueden mejorar el rendimiento.
![Page 8: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/8.jpg)
04/02/03 8
INSRAINSRAInterfaz gráfica donde se muestran los mensajes de error generados por Insure++.El formato de los mensajes permiten la fácil localización en el código fuente permitiendo su correccción.
![Page 9: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/9.jpg)
04/02/03 9
INUSURE ++. Control INUSURE ++. Control PanelPanel
![Page 10: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/10.jpg)
04/02/03 10
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
Integración de Insure ++ en el entorno Visual C++
![Page 11: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/11.jpg)
04/02/03 11
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
Si no se ha realizado algún avance, al intentar mostrar la ruta real o la ruta estimada se produce un error de ejecución.
![Page 12: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/12.jpg)
04/02/03 12
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
El error es detectado por Insure++ señalando la línea de código donde se ha producido.
![Page 13: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/13.jpg)
04/02/03 13
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
![Page 14: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/14.jpg)
04/02/03 14
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
Errores generados por Insure++ tras la traza realizada
![Page 15: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/15.jpg)
04/02/03 15
Sistema de Posicionamiento Sistema de Posicionamiento en 2Den 2D
Informe generado tras la ejecución del programa
![Page 16: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/16.jpg)
04/02/03 16
TEST DE COBERTURATEST DE COBERTURA
Representación gráfica del test de cobertura por funciones.
El test está basado en el log de las diversas ejecuciones.
![Page 17: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/17.jpg)
04/02/03 17
![Page 18: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/18.jpg)
04/02/03 18
TEST DE COBERTURATEST DE COBERTURA
![Page 19: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/19.jpg)
04/02/03 19
SELECTIVE CHEKINGSELECTIVE CHEKING
Con el símbolo del pre-procesador _INSURE_ automáticamente definido, podemos insertar llamadas condicionales y habilitar o deshabilitar el chequeo en tiempo de ejecución.
grind_away() {
#ifdef __INSURE__ _Insure_set_option("runtime", "off"); #endif ... code ... #ifdef __INSURE__ _Insure_set_option("runtime", "on");
#endif }
![Page 20: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/20.jpg)
04/02/03 20
INUSE : HISTORYINUSE : HISTORY
Muestra la cantidad de memoria asignada en el Heap. Este gráfico se actualiza periodicamente para mostrar el estado actual de la aplicación y suele ser usado para llevar un seguimiento del uso de la memoria que consume la aplicación
![Page 21: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/21.jpg)
04/02/03 21
INUSE : BLOCK INUSE : BLOCK FRECUENCYFRECUENCY
Número de bloques de cada tamaño que han sido asignados. Esto suele ser útil para elegir una strategia de optimización de memoria frente a otra.
![Page 22: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/22.jpg)
04/02/03 22
INUSE:TIME LAYOUT INUSE:TIME LAYOUT REPORTREPORT
Muestra como los bloques de memoria son asignados durante la ejecución del programa.
![Page 23: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/23.jpg)
04/02/03 23
INUSE : HEAP LAYOUTINUSE : HEAP LAYOUT“Layout” de la memoria con los bloques que han sido asignados dinámicamente, incluyendo los espacios libres entre ellos. Sirve para ver la fragmentación y los “memory leaks”
![Page 24: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/24.jpg)
04/02/03 24
INUSE : MEMORY USAGEINUSE : MEMORY USAGE
Representa cuantas veces cada una de las llamadas a memoria se han realizado. También muestra el tamaño actual del heap y la cantidad de memoria en uso.
![Page 25: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/25.jpg)
04/02/03 25
INUSE: INUSE: Query ReportsQuery Reports
Con Query podemos saber con exactitud cuanta memoria se asigna a bloques de un determinado tamaño o lugar.
![Page 26: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/26.jpg)
04/02/03 26
INUSE: INUSE: Query ReportsQuery Reports
Por ejemplo, la siguiente consulta obtiene de los bloques entre 60 y 70 bytes de tamñano obtenemos los ‘block id’ y las trazas de la pila de todos los bloques comprendidos entre ese tamaño
![Page 27: 04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia](https://reader036.vdocumento.com/reader036/viewer/2022070416/5665b4571a28abb57c90ad9f/html5/thumbnails/27.jpg)
04/02/03 27