Temporal logic is often used as the specification formalism for the automatic verification of finite state systems. The automatic temporal verification of a system is a procedure that returns a yes/no answer, and in the latter case also provides a counterexample. In this paper we suggest a new application for temporal logic, as a way of assisting the debugging of a concurrent or a sequential program. We employ temporal logic over finite sequences as a constraint formalism that is used to control the way we step through the states of the debugged system. Using such temporal specification and various search strategies, we are able to traverse the executions of the system and obtain important intuitive information about its behaviors. We describe an implementation of these ideas as a debugging tool.
[1]
Emden R. Gansner,et al.
An open graph visualization system and its applications to software engineering
,
2000
.
[2]
Edmund M. Clarke,et al.
Characterizing Correctness Properties of Parallel Programs Using Fixpoints
,
1980,
ICALP.
[3]
Amir Pnueli,et al.
A Choppy Logic
,
1986,
LICS.
[4]
Pierre Wolper,et al.
Simple on-the-fly automatic verification of linear temporal logic
,
1995,
PSTV.
[5]
Amir Pnueli,et al.
The temporal logic of programs
,
1977,
18th Annual Symposium on Foundations of Computer Science (sfcs 1977).
[6]
Patrice Godefroid,et al.
Model checking for programming languages using VeriSoft
,
1997,
POPL '97.