|
ABSTRACT
Forward symbolic execution is a program analysis technique that allows using symbolic inputs to explore program executions. The traditional applications of this technique have focused on programs that manipulate primitive data types, such as integer or boolean. Recent extensions have shown how to handle reference types at their representation level. The extensions have favorably been backed by advances in constraint solving technology, and together they have made symbolic execution applicable, at least in theory, to a large class of programs. In practice, however, the increased potential for applications has created significant issues with scalability of symbolic execution to programs of non-trivial size---the ensuing path conditions rapidly become unfeasibly complex.We present Dianju, a new technique that aims to address the scalability of symbolic execution. The fundamental idea in Dianju is to perform symbolic execution of commonly used library classes (such as strings, sets and maps) at the abstract level rather than the representation level. Dianju defines semantics of operations on symbolic objects of these classes, which allows Dianju to abstract away from the complexity that is normally inherent in library implementations, thus promising scalable analyses based on symbolic execution.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
SGLIB---A Simple Generic Library for C. http://xref-tech.com/sglib/main.html.
|
| |
2
|
T. Andrews, S. Qadeer, S. K. Rajamani, J. Rehof, and Y. Xie. Zing: A model checker for concurrent software. In 16th International Conference on Computer Aided Verification (CAV), Boston, MA, July 2004.
|
| |
3
|
Cyrille Artho , Howard Barringer , Allen Goldberg , Klaus Havelund , Sarfraz Khurshid , Mike Lowry , Corina Pasareanu , Grigore Rosu , Koushik Sen , Willem Visser , Rich Washington, Combining test case generation and runtime verification, Theoretical Computer Science, v.336 n.2-3, p.209-234, 26 May 2005
[doi> 10.1016/j.tcs.2004.11.007]
|
| |
4
|
Clark Barrett and Sergey Berezin. CVC Lite: A new implementation of the cooperating validity checker. In Proceedings of the 16th International Conference On Computer Aided Verification, Boston, MA, July 2004.
|
| |
5
|
Kent Beck and Erich Gamma. Test infected: Programmers love writing tests. Java Report, 3(7), July 1998.
|
 |
6
|
|
 |
7
|
|
| |
8
|
|
| |
9
|
Cadence. Components of a complete assertion-based verification solution, 2005. http://www.cadence.com/whitepapers/abv_wp.pdf.
|
| |
10
|
Shigeru Chiba. Javassist---a reflection-based programming wizard for Java. In Proceedings of the ACM OOPSLA '98 Workshop on Reflective Programming in C++ and Java, October 1998.
|
 |
11
|
|
| |
12
|
Markus Dahm. Byte code engineering library. http://bcel.sourceforge.net/.
|
 |
13
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
| |
14
|
Iván García. Enabling symbolic execution of Java programs using bytecode instrumentation. Master's thesis, Department of Electrical and Computer Engineering, The University of Texas at Austin, May 2005.
|
 |
15
|
|
 |
16
|
|
| |
17
|
|
| |
18
|
Daniel Jackson. Micromodels of software: Modelling and analysis with Alloy, 2001.
|
| |
19
|
Sarfraz Khurshid, Iván García, and Yuk Lai Suen. Repairing structurally complex data. In 12th International SPIN Workshop on Model Checking of Software, San Francisco, CA, August 2005.
|
| |
20
|
Sarfraz Khurshid, Corina Pasareanu, and Willem Visser. Generalized symbolic execution for model checking and testing. In Proc. 9th International Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS), Warsaw, Poland, April 2003.
|
 |
21
|
|
 |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
Darko Marinov, Alexandr Andoni, Dumitru Daniliuc, Sarfraz Khurshid, and Martin Rinard. An evaluation of exhaustive testing for data structures. Technical Report MIT-LCS-TR-921, MIT CSAIL, Cambridge, MA, September 2003.
|
| |
26
|
|
| |
27
|
Corina S. Pasareanu and Willem Visser. Verification of java programs using symbolic execution and invariant generation. In Proc. 11th International SPIN Workshop on Model Checking of Software, Barcelona, Spain, April 2004.
|
 |
28
|
|
| |
29
|
|
| |
30
|
Yuk Lai Suen. Automatically repairing structurally complex data. Master's thesis, Department of Electrical and Computer Engineering, The University of Texas at Austin, May 2005.
|
| |
31
|
Sun Microsystems. Java 2 Platform, Standard Edition, v1.3.1 API Specification.
|
| |
32
|
Synopsis. Assertion-based verification, March 2003. http://www.synopsys.com/products/simulation/assertion_based_wp.pdf.
|
| |
33
|
Margus Veanes, Colin Campbell, Wolfram Schulte, Pushmeet Kohli, N. Tillmann, and W. Grieskamp. On-the-fly testing of reactive systems. (Submitted for publication.).
|
| |
34
|
|
 |
35
|
|
| |
36
|
Srinivas Visvanathan and Neelam Gupta. Generating test data for functions with pointer inputs. Edinburgh, Scotland, September 2002.
|
 |
37
|
|
| |
38
|
Tao Xie, Darko Marinov, Wolfram Schulte, and David Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In Proc. 11th International Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS), Edinburgh, UK, April 2005.
|
|