04/02/031 insure ++ v6.0 salvador benimeli fenollar laboratorio de sistemas de información facultad...

27
04/02/03 1 INSURE ++ v6.0 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia

Upload: primo-fallas

Post on 23-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

04/02/03 27