Research Publications Misc
Overview Clairvoyant is the first comprehensive source-level debugger for WSNs. It simultaneously satisfies the demands of several domains that are notoriously difficult to debug, including (i) embedded systems, (ii) distributed systems, (iii) event-driven, and I/O oriented computing, and (iv) multi-hop, wireless networking. Clairvoyant enables the programmer to remotely connect to a WSN and debug from the source-level point of view using standard debugging commands, including break, step, watch, and backtrace. Besides the traditional debugging commands, it also provides new, special-purpose commands for WSNs such as listing all enabled interrupts along with their handler routines. The user can also simulate an interrupt at any point in the code, can specify conditional breakpoints at which the debugger will only intercept execution if a condition is satisfied, and can use a series of new global commands such as gstop and gcontinue which operate not on a single node, but on all nodes in the network. Clairvoyant does not require the user to compile the debugging code into an application before it can be debugged. Instead, it directly modifies the binary to enable execution of debugging commands only when needed. This work is the first to explore the timing issues that arise when using source-level debugging on a multi-hop, wireless network. We devised techniques to transmit messages through an active network to a solitary node that is being debugged, and our empirical evaluation shows that the number of radio messages required to operate most debugging commands can be reduced to a small constant number. We also explore several techniques for preserving temporal consistency over debugging commands both within the node and between different nodes in the network.
Source Code The source code for clairvoyant is freely available. Clairvoyant was implemented on the mica2 platform, but can easily be ported to other AVR platforms. We are currently working on an implementation for the MSP430-based telos, which has less program memory than the mica2. We are trying to use the 430's ability to execute instructions directly out of RAM (instead of out of the flash-based program memory) to (i) reduce the demands of Clairvoyant on internal program memory, and (ii) reduce the number of writes that Clairvoyant requires.

Jing Yang, M.L. Soffa, L. Selavo, and K. Whitehouse. Clairvoyant: A Comprehensive Source-Level Debugger for Wireless Sensor Networks. The 5th ACM Conference on Embedded Networked Sensor Systems (Sensys) 2007. (PPT)

Kamin Whitehouse
Computer Science Department
The University of Virginia
217 Olsson Hall
Charlottesville, Virginia 94720