Skip to main content

Visualizing Unbounded Symbolic Execution

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8570))

Abstract

We present an approach for representing and visualizing all possible symbolic execution paths of a program. This is achieved by integrating method contracts and loop invariants into a symbolic execution engine and rendering them visually in a suitable manner. We use the technique to create an omniscient visual symbolic state debugger for Java that can deal with unbounded loops and method calls.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Barnett, M., Leino, K.R.M., Schulte, W.: The spec# programming system: An overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  2. Beckert, B., Hähnle, R., Schmitt, P.: Verification of Object-Oriented Software. LNCS, vol. 4334. Springer (2007)

    Google Scholar 

  3. Burstall, R.M.: Program proving as hand simulation with a little induction. In: Information Processing 1974, pp. 308–312. Elsevier/North-Holland (1974)

    Google Scholar 

  4. Cadar, C., Dunbar, D., Engler, D.R.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: Draves, R., van Renesse, R. (eds.) 8th USENIX Symp. on Operating Systems Design and Implementation, OSDI. USENIX Association, San Diego (2008)

    Google Scholar 

  5. De Halleux, J., Tillmann, N.: Parameterized unit testing with Pex. In: Beckert, B., Hähnle, R. (eds.) TAP 2008. LNCS, vol. 4966, pp. 171–181. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  6. Dromey, R.G.: From requirements to design: Formalizing the key steps. In: 1st Intl. Conf. on Software Engineering and Formal Methods, SEFM. IEEE Computer Society, Brisbane (2003)

    Google Scholar 

  7. Engel, C., Hähnle, R.: Generating unit tests from formal proofs. In: Gurevich, Y., Meyer, B. (eds.) TAP 2007. LNCS, vol. 4454, pp. 169–188. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  8. Fagan, M.E.: Design and code inspections to reduce errors in program development. IBM Systems Journal 15(3), 182–211 (1976)

    Article  Google Scholar 

  9. Fähndrich, M., Barnett, M., Logozzo, F.: Code Contracts, http://research.microsoft.com/en-us/projects/contracts

  10. Godefroid, P.: Compositional dynamic test generation. In: POPL, pp. 47–54 (2007)

    Google Scholar 

  11. Hähnle, R., Baum, M., Bubel, R., Rothe, M.: A visual interactive debugger based on symbolic execution. In: ASE, pp. 143–146 (2010)

    Google Scholar 

  12. Hähnle, R., Schaefer, I., Bubel, R.: Reuse in Software Verification by Abstract Method Calls. In: Bonacina, M.P. (ed.) CADE 2013. LNCS, vol. 7898, pp. 300–314. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  13. Jamrozik, K., Fraser, G., Tillmann, N., Halleux, J.D.: Augmented dynamic symbolic execution. In: ASE, pp. 254–257. ACM (September 2012)

    Google Scholar 

  14. King, J.C.: Symbolic Execution and Program Testing. Communications of the ACM 19(7), 385–394 (1976)

    Article  MATH  Google Scholar 

  15. Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C., Cok, D., Müller, P., Kiniry, J., Chalin, P., Zimmerman, D.M.: JML Reference Manual (September 2009)

    Google Scholar 

  16. Liskov, B., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)

    Article  Google Scholar 

  17. Meyer, B.: Applying “design by contract”. IEEE Computer 25(10), 40–51 (1992)

    Article  Google Scholar 

  18. Ottenstein, K.J., Ottenstein, L.M.: The program dependence graph in a software development environment. In: Riddle, W.E., Henderson, P.B. (eds.) Proc. of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, pp. 177–184. ACM (1984)

    Google Scholar 

  19. Vanoverberghe, D., Piessens, F.: Theoretical Aspects of Compositional Symbolic Execution. In: Giannakopoulou, D., Orejas, F. (eds.) FASE 2011. LNCS, vol. 6603, pp. 247–261. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  20. Zeller, A.: Why Programs Fail: A Guide to Systematic Debugging, 2nd edn. Elsevier (2009)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this paper

Cite this paper

Hentschel, M., Hähnle, R., Bubel, R. (2014). Visualizing Unbounded Symbolic Execution. In: Seidl, M., Tillmann, N. (eds) Tests and Proofs. TAP 2014. Lecture Notes in Computer Science, vol 8570. Springer, Cham. https://doi.org/10.1007/978-3-319-09099-3_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-09099-3_7

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-09098-6

  • Online ISBN: 978-3-319-09099-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics