Unified Debugging Of Distributed Systems With Recon

Unified Debugging Of Distributed Systems With Recon
DSN 2011, 18%=26/148

To scale to today's complex distributed software systems, debugging and replaying techniques mostly focus on single facets of software, e.g., local concurrency, distributed messaging, or data representation. This forces developers to tediously combine different technologies such as instruction-level dynamic tracing, event log analysis, or global state reconstruction to gradually explain non-trivial defects. This paper proposes Recon, a debugging system that provides iterative and interactive homogeneous debugging services. As related systems, Recon promotes SQL-like queries for debugging distributed systems. Unlike other approaches, however, Recon allows for all system artifacts including nodes, communication channels, events, or instructions to be uniformly described by relations. Also, an application in Recon originally runs with a lightweight logger that only collects replay logs for individual nodes. Developers debug a complete program by replaying the execution with fine-grained instrumentation that is capable of exposing instruction-level information. We illustrate the effectiveness of Recon on programs as diverse as BerkeleyDB, i3/Chord, RandTree, and Pastry. Our evaluation includes executions in local clusters as well as in Amazon EC2 and exhibits an unreported bug in RandTree.

  author    = {Kyu Hyung Lee and
               Nick Sumner and
               Xiangyu Zhang and
               Patrick Eugster},
  title     = {Unified debugging of distributed systems with Recon},
  booktitle = {DSN},
  year      = {2011},
  pages     = {85-96},
  ee        = {http://doi.ieeecomputersociety.org/10.1109/DSN.2011.5958209},
  crossref  = {DBLP:conf/dsn/2011},
  bibsource = {DBLP, http://dblp.uni-trier.de}