SlideShare a Scribd company logo
A static Analyzer for Finding Dynamic  Programming Errors Possamai Lino, 800509 Analisi e Verifica di Programmi 4 Maggio 2006
Introduzione Gli errori dinamici di programmazione appartengono alla classe di errori che sono difficili da rilevare sia manualmente che automaticamente Invalid pointer references Faulty storage allocation Uso di memoria non inizializzata Operazioni improprie sulle risorse Sono causati nella maggior parte dei casi da interazioni complesse tra componenti del programma. In prodotti commerciali, si stima che sia nell’ordine del 90% degli errori rilevati.
Obiettivi L’obiettivo principale è stato quello di costruire un tool per l’analisi del codice che fosse facile da usare come nel caso dei runtime memory debugger, ma che non richieda all’utente di dover eseguire il programma, fornendo quindi i test case, che riportasse molti degli errori possibili, che l’informazione fosse ricavata esclusivamente dall’analisi del codice sorgente, senza l’uso di annotazioni che l’analisi effettuata analizzasse solamente i cammini possibili che l’informazione prodotta riguardante gli errori rilevati fosse abbastanza esplicativa in modo tale che l’utente capisca velocemente dove si genera l’errore
Architettura di PRE fix La prima fase consiste nel  parsing  del codice sorgente in modo tale  da costruire l’AST, determinando, allo stesso tempo, l’ordine di esecuzione delle funzioni. È una fase molto “pesante” in termini di tempo. Può consumare circa il 20-25% del tempo totale di esecuzione Bottom up????
Architettura di PRE fix Per rilevare gli errori inter-procedurali, è necessario simulare l’esecuzione di una funzione su un modello astratto della memoria grazie ad una macchina virtuale. Lo stato della memoria viene tracciato durante tutta la simulazione delle funzioni, come anche tra gli archi del grafo delle chiamate. Il compito del  simulatore  è quello di osservare lo stato della memoria nel modello astratto e di costruisce, alla fine,  un  modello  di comportamento per la funzione  simulata.
Architettura di PRE fix  3.x – visione d’insieme
Esempio 1 #include <stdlib.h> 2 #include <stdio.h> 3 4 char *f(int  size ) 5 { 6  char *result; 7 8    if (size > 0) 9    result = (char*)malloc(size); 10  if (size == 1) 11  return NULL; 12  result[0] = 0; 13  return  result ; 14 } La funzione  f  alloca memoria nello heap e la inizializza (se la dimensione richiesta è maggiore di zero). Se  size=1 , la funzione ritorna NULL. Negli altri casi, inizializza a zero la variabile  result . In questo caso, PRE fix  individua tre warning.
Esempio 1 #include <stdlib.h> 2 #include <stdio.h> 3 4 char *f(int size) 5 { 6  char *result; 7 8    if (size > 0) 9    result = (char*)malloc(size); 10  if (size == 1) 11  return NULL; 12  result[0] = 0; 13  return result; 14 } example1.c(11) : warning 14: leaking memory problem occurs in function 'f' The call stack when memory is allocated is: example1.c(9) : f Problem occurs when the following conditions are true: example1.c(8) : when 'size > 0' here example1.c(10) : when 'size == 1' here Path includes 4 statements on the following lines: 8 9 10 11 example1.c(9) : used system model 'malloc' for function call: 'malloc(size)' function returns a new memory block memory allocated Sorgente: Output dell’analisi:
Risultati
Risultati
Limitazioni Per programmi commerciali, quali per esempio Apache o Mozilla, l’analisi del codice è molto lenta, non è quindi un tool interattivo. Dato che il numero di cammino possibili può risultare molto grande, la simulazione di tutti i cammini risulta un’operazione intrattabile. Questo implica che limitare il numero di cammini percorribili, limita di conseguenza anche il numero di errori rilevati È incompleto nel considerare gli errori che possono essere rilevati. Non tutti gli errori vengono rilevati (espandi). Non c’è la possibilità di limitare il codice da analizzare. La creazione di modelli per funzioni di cui non si dispone il codice (es. librerie dinamiche), risulta difficoltosa.
Conclusioni È uno strumento indispensabile durante lo sviluppo di un’applicazione. Molto utile quando si vogliono scoprire dei bug che sarebbero stati di difficile individuazione anche con debugger che usano test cases. La possibilità di vedere il cammino che genera l’errore è essenziale per l’usabilità del tool. La possibilità di filtrare i  noise errors , e la possibilità di parametrizzare il numero di cammini visitati nonché il numero di volte che si devono eseguire le funzioni ricorsive, sono di vitale importanza.
References A Static Analyzer for Finding Dynamic Programming Errors, William R. Bush, Jonathan D. Pincus, David J. Sielaff,  Intrinsa Corporation, Mountain View, CA, USA CMSC 631 Program Analysis and Understanding, Department of Computer Science, University of Maryland
Ad

More Related Content

Viewers also liked (13)

wilfredo lam por Flying Toast
wilfredo lam por Flying Toastwilfredo lam por Flying Toast
wilfredo lam por Flying Toast
Kyle Moore
 
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay InformerAll About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
theinformer119
 
Mejorar el clima_de_clase
Mejorar el clima_de_claseMejorar el clima_de_clase
Mejorar el clima_de_clase
Jose Luis Espinosa
 
En la hora de mi muerte llámame meditación
En la hora de mi muerte llámame meditaciónEn la hora de mi muerte llámame meditación
En la hora de mi muerte llámame meditación
monica eljuri
 
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Editor IJCATR
 
Por los siglos de los siglos meditación
Por los siglos de los siglos   meditaciónPor los siglos de los siglos   meditación
Por los siglos de los siglos meditación
monica eljuri
 
Guia plantulas e sementes da mata atlantica do estado de sao paulo
Guia plantulas e sementes da mata atlantica do estado de sao pauloGuia plantulas e sementes da mata atlantica do estado de sao paulo
Guia plantulas e sementes da mata atlantica do estado de sao paulo
Mateus Marcellinus
 
Data Clustering Using Swarm Intelligence Algorithms An Overview
Data Clustering Using  Swarm Intelligence Algorithms  An OverviewData Clustering Using  Swarm Intelligence Algorithms  An Overview
Data Clustering Using Swarm Intelligence Algorithms An Overview
Aboul Ella Hassanien
 
Planificacion familiartrabajo
Planificacion familiartrabajoPlanificacion familiartrabajo
Planificacion familiartrabajo
Lupita Carrillo
 
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA PERLAWANAN RAKYAT PALEMBANG...
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA  PERLAWANAN RAKYAT PALEMBANG...SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA  PERLAWANAN RAKYAT PALEMBANG...
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA PERLAWANAN RAKYAT PALEMBANG...
yeoja99
 
Actividades para-ninos-nuevo-testamento
Actividades para-ninos-nuevo-testamentoActividades para-ninos-nuevo-testamento
Actividades para-ninos-nuevo-testamento
Luz Milagro
 
AJ Faxel's Work Photos
AJ Faxel's Work PhotosAJ Faxel's Work Photos
AJ Faxel's Work Photos
AJ Faxel
 
Neue Lernkultur und wie digitale Medien dazu beitragen können
Neue Lernkultur und wie digitale Medien dazu beitragen könnenNeue Lernkultur und wie digitale Medien dazu beitragen können
Neue Lernkultur und wie digitale Medien dazu beitragen können
Josef Buchner
 
wilfredo lam por Flying Toast
wilfredo lam por Flying Toastwilfredo lam por Flying Toast
wilfredo lam por Flying Toast
Kyle Moore
 
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay InformerAll About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
All About mercury Bay, Whitianga, Tairua, Pauanui| the Mercury Bay Informer
theinformer119
 
En la hora de mi muerte llámame meditación
En la hora de mi muerte llámame meditaciónEn la hora de mi muerte llámame meditación
En la hora de mi muerte llámame meditación
monica eljuri
 
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Enhanced Quality of Service Based Routing Protocol Using Hybrid Ant Colony Op...
Editor IJCATR
 
Por los siglos de los siglos meditación
Por los siglos de los siglos   meditaciónPor los siglos de los siglos   meditación
Por los siglos de los siglos meditación
monica eljuri
 
Guia plantulas e sementes da mata atlantica do estado de sao paulo
Guia plantulas e sementes da mata atlantica do estado de sao pauloGuia plantulas e sementes da mata atlantica do estado de sao paulo
Guia plantulas e sementes da mata atlantica do estado de sao paulo
Mateus Marcellinus
 
Data Clustering Using Swarm Intelligence Algorithms An Overview
Data Clustering Using  Swarm Intelligence Algorithms  An OverviewData Clustering Using  Swarm Intelligence Algorithms  An Overview
Data Clustering Using Swarm Intelligence Algorithms An Overview
Aboul Ella Hassanien
 
Planificacion familiartrabajo
Planificacion familiartrabajoPlanificacion familiartrabajo
Planificacion familiartrabajo
Lupita Carrillo
 
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA PERLAWANAN RAKYAT PALEMBANG...
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA  PERLAWANAN RAKYAT PALEMBANG...SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA  PERLAWANAN RAKYAT PALEMBANG...
SEJARAH PERLAWANAN TERHADAP KOLONIALISME BELANDA PERLAWANAN RAKYAT PALEMBANG...
yeoja99
 
Actividades para-ninos-nuevo-testamento
Actividades para-ninos-nuevo-testamentoActividades para-ninos-nuevo-testamento
Actividades para-ninos-nuevo-testamento
Luz Milagro
 
AJ Faxel's Work Photos
AJ Faxel's Work PhotosAJ Faxel's Work Photos
AJ Faxel's Work Photos
AJ Faxel
 
Neue Lernkultur und wie digitale Medien dazu beitragen können
Neue Lernkultur und wie digitale Medien dazu beitragen könnenNeue Lernkultur und wie digitale Medien dazu beitragen können
Neue Lernkultur und wie digitale Medien dazu beitragen können
Josef Buchner
 

Similar to A static Analyzer for Finding Dynamic Programming Errors (20)

Elaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlabElaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlab
profman
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
MichaelFuser
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
Daniel Londero
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
Majong DevJfu
 
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
AIMFirst
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance Tuning
Marco Sabatini
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflow
Giacomo Antonino Fazio
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
Domenico Briganti
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
Andrea Dottor
 
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
salsagattauj
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
Luca Manara
 
Smau Milano2108_CNA
Smau Milano2108_CNASmau Milano2108_CNA
Smau Milano2108_CNA
SMAU
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
Matteo Baccan
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
GiacomoZorzin
 
Clean android code
Clean android codeClean android code
Clean android code
firenze-gtug
 
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
grelotaustmo
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorsando.it
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
Filippo Matteo Riggio
 
TTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug romaTTT - Test, Tools and Tips - jug roma
TTT - Test, Tools and Tips - jug roma
diego mauricio lagos morales
 
Elaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlabElaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlab
profman
 
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
Progetto e sviluppo di un sistema di rilevamento di anomalie su sistemi infor...
MichaelFuser
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
Majong DevJfu
 
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
Webinar la simulazione__uno_strumento_per_migliorare_la_realta_10.11.2016
AIMFirst
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance Tuning
Marco Sabatini
 
Attacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflowAttacchi alle applicazioni basati su buffer overflow
Attacchi alle applicazioni basati su buffer overflow
Giacomo Antonino Fazio
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
Andrea Dottor
 
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
Solution Manual for Computer Organization &amp; Architecture Themes and Varia...
salsagattauj
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
Luca Manara
 
Smau Milano2108_CNA
Smau Milano2108_CNASmau Milano2108_CNA
Smau Milano2108_CNA
SMAU
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
Matteo Baccan
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
GiacomoZorzin
 
Clean android code
Clean android codeClean android code
Clean android code
firenze-gtug
 
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
Get Solution Manual for C++ How to Program 10th by Deitel Free All Chapters A...
grelotaustmo
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorsando.it
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
Filippo Matteo Riggio
 
Ad

More from Lino Possamai (7)

Music Motive @ H-ack
Music Motive @ H-ack Music Motive @ H-ack
Music Motive @ H-ack
Lino Possamai
 
Metodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessiMetodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessi
Lino Possamai
 
Multidimensional Analysis of Complex Networks
Multidimensional Analysis of Complex NetworksMultidimensional Analysis of Complex Networks
Multidimensional Analysis of Complex Networks
Lino Possamai
 
Slashdot.Org
Slashdot.OrgSlashdot.Org
Slashdot.Org
Lino Possamai
 
Optimization of Collective Communication in MPICH
Optimization of Collective Communication in MPICH Optimization of Collective Communication in MPICH
Optimization of Collective Communication in MPICH
Lino Possamai
 
On Applying Or-Parallelism and Tabling to Logic Programs
On Applying Or-Parallelism and Tabling to Logic ProgramsOn Applying Or-Parallelism and Tabling to Logic Programs
On Applying Or-Parallelism and Tabling to Logic Programs
Lino Possamai
 
Cure, Clustering Algorithm
Cure, Clustering AlgorithmCure, Clustering Algorithm
Cure, Clustering Algorithm
Lino Possamai
 
Music Motive @ H-ack
Music Motive @ H-ack Music Motive @ H-ack
Music Motive @ H-ack
Lino Possamai
 
Metodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessiMetodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessi
Lino Possamai
 
Multidimensional Analysis of Complex Networks
Multidimensional Analysis of Complex NetworksMultidimensional Analysis of Complex Networks
Multidimensional Analysis of Complex Networks
Lino Possamai
 
Optimization of Collective Communication in MPICH
Optimization of Collective Communication in MPICH Optimization of Collective Communication in MPICH
Optimization of Collective Communication in MPICH
Lino Possamai
 
On Applying Or-Parallelism and Tabling to Logic Programs
On Applying Or-Parallelism and Tabling to Logic ProgramsOn Applying Or-Parallelism and Tabling to Logic Programs
On Applying Or-Parallelism and Tabling to Logic Programs
Lino Possamai
 
Cure, Clustering Algorithm
Cure, Clustering AlgorithmCure, Clustering Algorithm
Cure, Clustering Algorithm
Lino Possamai
 
Ad

A static Analyzer for Finding Dynamic Programming Errors

  • 1. A static Analyzer for Finding Dynamic Programming Errors Possamai Lino, 800509 Analisi e Verifica di Programmi 4 Maggio 2006
  • 2. Introduzione Gli errori dinamici di programmazione appartengono alla classe di errori che sono difficili da rilevare sia manualmente che automaticamente Invalid pointer references Faulty storage allocation Uso di memoria non inizializzata Operazioni improprie sulle risorse Sono causati nella maggior parte dei casi da interazioni complesse tra componenti del programma. In prodotti commerciali, si stima che sia nell’ordine del 90% degli errori rilevati.
  • 3. Obiettivi L’obiettivo principale è stato quello di costruire un tool per l’analisi del codice che fosse facile da usare come nel caso dei runtime memory debugger, ma che non richieda all’utente di dover eseguire il programma, fornendo quindi i test case, che riportasse molti degli errori possibili, che l’informazione fosse ricavata esclusivamente dall’analisi del codice sorgente, senza l’uso di annotazioni che l’analisi effettuata analizzasse solamente i cammini possibili che l’informazione prodotta riguardante gli errori rilevati fosse abbastanza esplicativa in modo tale che l’utente capisca velocemente dove si genera l’errore
  • 4. Architettura di PRE fix La prima fase consiste nel parsing del codice sorgente in modo tale da costruire l’AST, determinando, allo stesso tempo, l’ordine di esecuzione delle funzioni. È una fase molto “pesante” in termini di tempo. Può consumare circa il 20-25% del tempo totale di esecuzione Bottom up????
  • 5. Architettura di PRE fix Per rilevare gli errori inter-procedurali, è necessario simulare l’esecuzione di una funzione su un modello astratto della memoria grazie ad una macchina virtuale. Lo stato della memoria viene tracciato durante tutta la simulazione delle funzioni, come anche tra gli archi del grafo delle chiamate. Il compito del simulatore è quello di osservare lo stato della memoria nel modello astratto e di costruisce, alla fine, un modello di comportamento per la funzione simulata.
  • 6. Architettura di PRE fix 3.x – visione d’insieme
  • 7. Esempio 1 #include <stdlib.h> 2 #include <stdio.h> 3 4 char *f(int size ) 5 { 6 char *result; 7 8 if (size > 0) 9 result = (char*)malloc(size); 10 if (size == 1) 11 return NULL; 12 result[0] = 0; 13 return result ; 14 } La funzione f alloca memoria nello heap e la inizializza (se la dimensione richiesta è maggiore di zero). Se size=1 , la funzione ritorna NULL. Negli altri casi, inizializza a zero la variabile result . In questo caso, PRE fix individua tre warning.
  • 8. Esempio 1 #include <stdlib.h> 2 #include <stdio.h> 3 4 char *f(int size) 5 { 6 char *result; 7 8 if (size > 0) 9 result = (char*)malloc(size); 10 if (size == 1) 11 return NULL; 12 result[0] = 0; 13 return result; 14 } example1.c(11) : warning 14: leaking memory problem occurs in function 'f' The call stack when memory is allocated is: example1.c(9) : f Problem occurs when the following conditions are true: example1.c(8) : when 'size > 0' here example1.c(10) : when 'size == 1' here Path includes 4 statements on the following lines: 8 9 10 11 example1.c(9) : used system model 'malloc' for function call: 'malloc(size)' function returns a new memory block memory allocated Sorgente: Output dell’analisi:
  • 11. Limitazioni Per programmi commerciali, quali per esempio Apache o Mozilla, l’analisi del codice è molto lenta, non è quindi un tool interattivo. Dato che il numero di cammino possibili può risultare molto grande, la simulazione di tutti i cammini risulta un’operazione intrattabile. Questo implica che limitare il numero di cammini percorribili, limita di conseguenza anche il numero di errori rilevati È incompleto nel considerare gli errori che possono essere rilevati. Non tutti gli errori vengono rilevati (espandi). Non c’è la possibilità di limitare il codice da analizzare. La creazione di modelli per funzioni di cui non si dispone il codice (es. librerie dinamiche), risulta difficoltosa.
  • 12. Conclusioni È uno strumento indispensabile durante lo sviluppo di un’applicazione. Molto utile quando si vogliono scoprire dei bug che sarebbero stati di difficile individuazione anche con debugger che usano test cases. La possibilità di vedere il cammino che genera l’errore è essenziale per l’usabilità del tool. La possibilità di filtrare i noise errors , e la possibilità di parametrizzare il numero di cammini visitati nonché il numero di volte che si devono eseguire le funzioni ricorsive, sono di vitale importanza.
  • 13. References A Static Analyzer for Finding Dynamic Programming Errors, William R. Bush, Jonathan D. Pincus, David J. Sielaff, Intrinsa Corporation, Mountain View, CA, USA CMSC 631 Program Analysis and Understanding, Department of Computer Science, University of Maryland