SPDebugger: A Fine-Grained Deterministic Debugger for Concurrency Code

Ziyi LIN  Yilei ZHOU  Hao ZHONG  Yuting CHEN  Haibo YU  Jianjun ZHAO  

IEICE TRANSACTIONS on Information and Systems   Vol.E100-D   No.3   pp.473-482
Publication Date: 2017/03/01
Publicized: 2016/12/20
Online ISSN: 1745-1361
DOI: 10.1587/transinf.2016EDP7388
Type of Manuscript: PAPER
Category: Software Engineering
concurrency,  debug,  deterministic reproduction,  

Full Text: PDF>>
Buy this Article

When debugging bugs, programmers often prepare test cases to reproduce buggy behaviours. However, for concurrent programs, test cases alone are typically insufficient to reproduce buggy behaviours, due to the nondeterminism of multi-threaded executions. In literature, various approaches have been proposed to reproduce buggy behaviours for concurrency bugs deterministically, but to the best of our knowledge, they are still limited. In particular, we have recognized three debugging scenarios from programming practice, but existing approaches can handle only one of the scenarios. In this paper, we propose a novel approach, called SPDebugger, that provides finer-grained thread controlling over test cases, programs under test, and even third party library code, to reproduce the predesigned thread execution schedule. The evaluation shows that SPDebugger handles more debugging scenarios than the state-of-the-art tool, called IMUnit, with similar human effort.