Author_Institution :
Sch. of Comput., Clemson Univ., Clemson, SC
Abstract :
TinyOS has proven to be an effective platform for developing reactive embedded network applications. However, the platform´s lean programming model and power-efficient operation come at a price: TinyOS applications are notoriously difficult to construct and debug. The development difficulties stem, in large part, from a programming model founded on events and deferred execution. In short, the model introduces non-determinism in the execution ordering of primitive actions (i.e., commands, events, and tasks). The resulting set of possible execution sequences is typically large, and can swamp developers´ unaided intellectual ability to reason about program behavior. In this paper, we present a platform-neutral visualization toolkit for TinyOS 2.0 to aid in program comprehension. The goal is to assist developers in reasoning about the computation forest underlying a system under test, and the particular branches chosen during each run. The toolkit design includes (i) a full-featured static analysis and instrumentation library, (ii) a selection-based probe insertion system, (iii) a lightweight event recording service, (iv) a trace extraction and reconstruction tool, and (v) two visualization front-ends. We demonstrate the utility of the toolkit using standard system examples, and present an analysis of the toolkit´s resource usage and performance characteristics.
Keywords :
operating systems (computers); program debugging; program diagnostics; program visualisation; TinyOS; execution sequences; instrumentation library; lean programming model; platform-neutral visualization toolkit; probe insertion system; program debugging; reactive embedded network applications; runtime behavior; static analysis; system under test; Computer networks; Embedded computing; Hardware; Instruments; Libraries; Power system modeling; Probes; Runtime; System testing; Visualization; TinyOS; embedded networks; nesC; program analysis; program comprehension; program tracing; program visualization; sensor networks;