Enhancing symbolic execution using memoization and incremental techniques
The last few years have seen a resurgence of interest in the use of symbolic execution--program analysis technique developed more than three decades ago to analyze program execution paths. However, symbolic execution remains an expensive technique and scaling it remains a key technical challenge. Th...
Main Author: | |
---|---|
Format: | Others |
Language: | en_US |
Published: |
2013
|
Subjects: | |
Online Access: | http://hdl.handle.net/2152/21259 |
id |
ndltd-UTEXAS-oai-repositories.lib.utexas.edu-2152-21259 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-UTEXAS-oai-repositories.lib.utexas.edu-2152-212592015-09-20T17:15:39ZEnhancing symbolic execution using memoization and incremental techniquesYang, Guowei, active 2013Symbolic executionIncremental analysisTrie data structureConstraint solvingProgram differencingAssertion differencingSoftware evolutionThe last few years have seen a resurgence of interest in the use of symbolic execution--program analysis technique developed more than three decades ago to analyze program execution paths. However, symbolic execution remains an expensive technique and scaling it remains a key technical challenge. There are two key factors that contribute to its cost: (1) the number of paths that need to be explored and (2) the cost of constraint solving, which is typically required for each path explored. Our insight is that the cost of symbolic execution can be reduced by an incremental approach, which uses static analysis and dynamic analysis to focus on relevant parts of code and reuse previous analysis results, thereby addressing both the key cost factors of symbolic execution. This dissertation presents Memoized Incremental Symbolic Execution, a novel approach that embodies our insight. Using symbolic execution in practice often requires several successive runs of the technique on largely similar underlying problems where successive problems differ due to some change, which may be to code, e.g., to fix a bug, to analysis parameters, e.g., to increase the path exploration depth, or to correctness properties, e.g., to check against stronger specifications that are written as assertions in code. Memoized Incremental Symbolic Execution, a three-fold approach, leverages the similarities in the successive problems to reduce the total cost of applying the technique. Our prototype tool-set is based on the Symbolic PathFinder. Experimental results show that Memoized Incremental Symbolic Execution enhances the efficacy of symbolic execution.text2013-09-20T14:44:46Z2013-082013-09-19August 20132013-09-20T14:44:46Zapplication/pdfhttp://hdl.handle.net/2152/21259en_US |
collection |
NDLTD |
language |
en_US |
format |
Others
|
sources |
NDLTD |
topic |
Symbolic execution Incremental analysis Trie data structure Constraint solving Program differencing Assertion differencing Software evolution |
spellingShingle |
Symbolic execution Incremental analysis Trie data structure Constraint solving Program differencing Assertion differencing Software evolution Yang, Guowei, active 2013 Enhancing symbolic execution using memoization and incremental techniques |
description |
The last few years have seen a resurgence of interest in the use of symbolic execution--program analysis technique developed more than three decades ago to analyze program execution paths. However, symbolic execution remains an expensive technique and scaling it remains a key technical challenge. There are two key factors that contribute to its cost: (1) the number of paths that need to be explored and (2) the cost of constraint solving, which is typically required for each path explored. Our insight is that the cost of symbolic execution can be reduced by an incremental approach, which uses static analysis and dynamic analysis to focus on relevant parts of code and reuse previous analysis results, thereby addressing both the key cost factors of symbolic execution. This dissertation presents Memoized Incremental Symbolic Execution, a novel approach that embodies our insight. Using symbolic execution in practice often requires several successive runs of the technique on largely similar underlying problems where successive problems differ due to some change, which may be to code, e.g., to fix a bug, to analysis parameters, e.g., to increase the path exploration depth, or to correctness properties, e.g., to check against stronger specifications that are written as assertions in code. Memoized Incremental Symbolic Execution, a three-fold approach, leverages the similarities in the successive problems to reduce the total cost of applying the technique. Our prototype tool-set is based on the Symbolic PathFinder. Experimental results show that Memoized Incremental Symbolic Execution enhances the efficacy of symbolic execution. === text |
author |
Yang, Guowei, active 2013 |
author_facet |
Yang, Guowei, active 2013 |
author_sort |
Yang, Guowei, active 2013 |
title |
Enhancing symbolic execution using memoization and incremental techniques |
title_short |
Enhancing symbolic execution using memoization and incremental techniques |
title_full |
Enhancing symbolic execution using memoization and incremental techniques |
title_fullStr |
Enhancing symbolic execution using memoization and incremental techniques |
title_full_unstemmed |
Enhancing symbolic execution using memoization and incremental techniques |
title_sort |
enhancing symbolic execution using memoization and incremental techniques |
publishDate |
2013 |
url |
http://hdl.handle.net/2152/21259 |
work_keys_str_mv |
AT yangguoweiactive2013 enhancingsymbolicexecutionusingmemoizationandincrementaltechniques |
_version_ |
1716823164413018112 |