Using SPIN for automated debugging of infinite executions of Java']Java programs

被引:9
作者
Adalid, Damian [1 ]
Salmeron, Alberto [1 ]
del Mar Gallardo, Maria [1 ]
Merino, Pedro [1 ]
机构
[1] Univ Malaga, Dpto Lenguajes & Ciencias Comp, E-29071 Malaga, Spain
关键词
RUNTIME VERIFICATION; MODEL CHECKING;
D O I
10.1016/j.jss.2013.10.056
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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 NI) for runtime monitoring. TJT is presented as an Eclipse plug-in and it has been successfully applied to debug complex public Java programs. (C) 2013 The Authors. Published by Elsevier Inc. All rights reserved.
引用
收藏
页码:61 / 75
页数:15
相关论文
共 37 条
[1]  
Adalid D., TJT TEMPORAL JAVA TE
[2]  
Adalid D., 2012, MSVVEIS 2012
[3]  
Alipour M.A., 2012, TECHNICAL REPORT
[4]  
[Anonymous], 1992, TEMPORAL LOGIC REACT, DOI DOI 10.1007/978-1-4612-0931-7
[5]  
[Anonymous], INT J SOFTWARE TOOLS
[6]  
[Anonymous], 2000, International Journal on Software Tools for Technology Transfer
[7]  
Artho C, 2003, LECT NOTES COMPUT SC, V2589, P87
[8]   DEVELOPMENT OF A DEBUGGER FOR A CONCURRENT LANGUAGE [J].
BAIARDI, F ;
DEFRANCESCO, N ;
VAGLINI, G .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 1986, 12 (04) :547-553
[9]   Runtime Verification for LTL and TLTL [J].
Bauer, Andreas ;
Leucker, Martin ;
Schallhart, Christian .
ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2011, 20 (04)
[10]  
Beust C., 2007, JAVA TESTING TESTNG