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...

Full description

Bibliographic Details
Main Author: Yang, Guowei, active 2013
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