Dependence-based multi-level tracing and replay for wireless sensor networks debugging

Due to resource constraints and unreliable communication, wireless sensor network (WSN) programming and debugging remain to be a challenging task. Runtime errors must be constantly monitored, often by checking for violations of certain invariants. Once an error is detected, diagnosis must be performed to identify the origin of the error. Deterministic replay is an error diagnosis method which has long been proposed for distributed systems. However, one of the significant hurdles for applying deterministic replay on WSN is posed by the small program memory on typical sensor nodes. This paper proposes a dependence-based multi-level method for memory-efficient tracing and replay. In the interest of portability across different hardware platforms, the method is implemented as a source-level tracing and replaying tool. To further reduce the code size after tracing instrumentation, a cost model is used for making the decision on which functions to in-line. A prototype for the tool targets C programs is developed on top of the Open64 compiler and is tested using several TinyOS applications running on TelosB motes. Preliminary experimental results show that the test programs, which do not fit the program memory after straightforward instrumentation, can be successfully accommodated in memory using the new method such that the injected errors can be found.

[1]  Kay Römer,et al.  PDA: Passive distributed assertions for sensor networks , 2009, 2009 International Conference on Information Processing in Sensor Networks.

[2]  Philip Levis,et al.  Collection tree protocol , 2009, SenSys '09.

[3]  Yuanyuan Zhou,et al.  Triage: diagnosing production run failures at the user's site , 2007, SOSP.

[4]  Bruce H. Krogh,et al.  Energy-efficient surveillance system using wireless sensor networks , 2004, MobiSys '04.

[5]  Richard Han,et al.  NodeMD: diagnosing node-level faults in remote wireless sensor systems , 2007, MobiSys '07.

[6]  Yunhao Liu,et al.  Passive diagnosis for wireless sensor networks , 2010, TNET.

[7]  Marek Olszewski,et al.  Kendo: efficient deterministic multithreading in software , 2009, ASPLOS.

[8]  Peng Li,et al.  T-check: bug finding for sensor networks , 2010, IPSN '10.

[9]  Mohammad Zulkernine,et al.  A compositional approach to monitoring distributed systems , 2002, Proceedings International Conference on Dependable Systems and Networks.

[10]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[11]  Leslie Lamport,et al.  The temporal logic of actions , 1994, TOPL.

[12]  Deborah Estrin,et al.  Sympathy for the sensor network debugger , 2005, SenSys '05.

[13]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[14]  David E. Culler,et al.  TOSSIM: accurate and scalable simulation of entire TinyOS applications , 2003, SenSys '03.

[15]  Min Xu ReTrace : Collecting Execution Trace with Virtual Machine Deterministic Replay , 2007 .

[16]  Guy Juanole,et al.  Observer-A Concept for Formal On-Line Validation of Distributed Systems , 1994, IEEE Trans. Software Eng..

[17]  Dai Pan,et al.  Slicing component-based systems , 2005, 10th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS'05).

[18]  Sanjay Bhansali,et al.  Framework for instruction-level tracing and analysis of program executions , 2006, VEE '06.

[19]  Koushik Sen,et al.  Efficient decentralized monitoring of safety in distributed systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[20]  David E. Culler,et al.  Design of an application-cooperative management system for wireless sensor networks , 2005, Proceeedings of the Second European Workshop on Wireless Sensor Networks, 2005..

[21]  Jonathan W. Hui,et al.  Marionette: using RPC for interactive development and debugging of wireless embedded networks , 2006, 2006 5th International Conference on Information Processing in Sensor Networks.

[22]  Ion Stoica,et al.  ODR: output-deterministic replay for multicore debugging , 2009, SOSP '09.

[23]  James Cownie,et al.  PinPlay: a framework for deterministic replay and reproducible analysis of parallel programs , 2010, CGO '10.

[24]  Jiawei Han,et al.  Dustminer: troubleshooting interactive complexity bugs in sensor networks , 2008, SenSys '08.

[25]  Kamin Whitehouse,et al.  Clairvoyant: a comprehensive source-level debugger for wireless sensor networks , 2007, SenSys '07.

[26]  Kang G. Shin,et al.  Post-Deployment Performance Debugging in Wireless Sensor Networks , 2009, 2009 30th IEEE Real-Time Systems Symposium.

[27]  Deborah Estrin,et al.  A wireless sensor network For structural monitoring , 2004, SenSys '04.

[28]  Richard Wolski,et al.  S2DB: a novel simulation-based debugger for sensor network applications , 2006, EMSOFT '06.

[29]  Saurabh Bagchi,et al.  Self checking network protocols: a monitor based approach , 2004, Proceedings of the 23rd IEEE International Symposium on Reliable Distributed Systems, 2004..

[30]  Jaiprakash T. Lallchandani,et al.  Regression testing based-on slicing of component-based software architectures , 2008, ISEC '08.

[31]  David W. Binkley,et al.  Precise executable interprocedural slices , 1993, LOPL.

[32]  Yuanyuan Zhou,et al.  PRES: probabilistic replay with execution sketching on multiprocessors , 2009, SOSP '09.

[33]  Kamin Whitehouse,et al.  Declarative tracepoints: a programmable and application independent debugging system for wireless sensor networks , 2008, SenSys '08.

[34]  Deborah Estrin,et al.  EmStar: A Software Environment for Developing and Deploying Wireless Sensor Networks , 2004, USENIX ATC, General Track.