DDD—a free graphical front-end for UNIX debuggers
ACM SIGPLAN Notices
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generating Tests from Counterexamples
Proceedings of the 26th International Conference on Software Engineering
Validating Personal Requirements by Assisted Symbolic Behavior Browsing
Proceedings of the 19th IEEE international conference on Automated software engineering
Check 'n' crash: combining static checking and testing
Proceedings of the 27th international conference on Software engineering
Mock-object generation with behavior
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
A visual interactive debugger based on symbolic execution
Proceedings of the IEEE/ACM international conference on Automated software engineering
Using the spec# language, methodology, and tools to write bug-free programs
Advanced Lectures on Software Engineering
The boogie verification debugger
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Comparing verification condition generation with symbolic execution: an experience report
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Integration of bounded model checking and deductive verification
FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software
Hi-index | 0.00 |
Automatic program verification allows programmers to detect program errors at compile time. When an attempt to automatically verify a program fails the reason for the failure is often difficult to understand. Many program verifiers provide a counterexample of the failed attempt. These counterexamples are usually very complex and therefore not amenable to manual inspection. Moreover, the counterexample may be invalid, possibly misleading the programmer. We present a new approach to help the programmer understand failed verification attempts by generating an executable program that reproduces the failed verification attempt described by the counterexample. The generated program (1) can be executed within the program debugger to systematically explore the counterexample, (2) encodes the program semantics used by the verifier, which allows us to detect errors in specifications as well as in programs, and (3) contains runtime checks for all specifications, which allows us to detect spurious errors. Our approach is implemented within the Spec# programming system.