Automata-Theoretic techniques for modal logics of programs
Journal of Computer and System Sciences
Development of a debugger for a concurrent language
IEEE Transactions on Software Engineering
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
Applied cryptography (2nd ed.): protocols, algorithms, and source code in C
Applied cryptography (2nd ed.): protocols, algorithms, and source code in C
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Automated Software Engineering
The Temporal Rover and the ATG Rover
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Reliable Hashing without Collosion Detection
CAV '93 Proceedings of the 5th International Conference on Computer Aided Verification
Automata-Based Verification of Temporal Properties on Running Programs
Proceedings of the 16th IEEE international conference on Automated software engineering
An Overview of the Runtime Verification Tool Java PathExplorer
Formal Methods in System Design
αSPIN: A tool for abstract model checking
International Journal on Software Tools for Technology Transfer (STTT)
A lightweight LTL runtime verification tool for java
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Robustness Testing of Java Server Applications
IEEE Transactions on Software Engineering
Event-based runtime verification of java programs
WODA '05 Proceedings of the third international workshop on Dynamic analysis
A Survey of Unit Testing Practices
IEEE Software
The software model checker Blast: Applications to software engineering
International Journal on Software Tools for Technology Transfer (STTT)
The Design of a Multicore Extension of the SPIN Model Checker
IEEE Transactions on Software Engineering
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Model Checking Dynamic Memory Allocation in Operating Systems
Journal of Automated Reasoning
Model checking: algorithmic verification and debugging
Communications of the ACM - Scratch Programming for All
FiLM: A Runtime Monitoring Tool for Distributed Systems
SSIRI '09 Proceedings of the 2009 Third IEEE International Conference on Secure Software Integration and Reliability Improvement
Experiments with test case generation and runtime analysis
ASM'03 Proceedings of the abstract state machines 10th international conference on Advances in theory and practice
Runtime Verification for LTL and TLTL
ACM Transactions on Software Engineering and Methodology (TOSEM)
Abstract matching for software model checking
SPIN'06 Proceedings of the 13th international conference on Model Checking Software
Hi-index | 0.00 |
This paper presents an approach for the automated debugging of reactive and concurrent Java programs, combining model checking and runtime monitoring. Runtime monitoring is used to transform the Java execution traces into the input for the model checker, the purpose of which is twofold. First, it checks these execution traces against properties written in linear temporal logic (LTL), which represent desirable or undesirable behaviors. Second, it produces several execution traces for a single Java program by generating test inputs and exploring different schedulings in multithreaded programs. As state explosion is the main drawback to model checking, we propose two abstraction approaches to reduce the memory requirements when storing Java states. We also present the formal framework to clarify which kinds of LTL safety and liveness formulas can be correctly analysed with each abstraction for both finite and infinite program executions. A major advantage of our approach comes from the model checker, which stores the trace of each failed execution, allowing the programmer to replay these executions to locate the bugs. Our current implementation, the tool TJT, uses Spin as the model checker and the Java Debug Interface (JDI) for runtime monitoring. TJT is presented as an Eclipse plug-in and it has been successfully applied to debug complex public Java programs.