| This dissertation presents a new integrated approach for designing, debugging, and analyzing complex embedded software. Debugging embedded software was once a matter of debugging sequential programs on hardware architectures having only a single processor. For this task, standard source and assembly level debugging tools, while not ideal, were sufficient. Modern embedded systems, however, are much more complex, arguably among the most complex systems being designed today [61]. They provide ever-growing numbers of features for increasingly sophisticated users; often, they contain multiple processors. Designers must deal with concurrence, distribution of functionality, and real-time constraints. Modern embedded debugging tools are poorly suited for these challenges. In fact, anecdotal evidence suggests that 90% of the debugging effort is spent on interactions among concurrent processes.; In this dissertation, we describe: (1) a new, coordination-based embedded software design methodology that exposes interactions among distributed processes and organizes this information in an intuitive fashion for the designer, (2) a visual feedback mechanism that leverages this high degree of exposure to provide designers with extensive detail when debugging systems, (3) an and hide spurious debugging information, allowing our debugging approach to scale to large systems, (4) a suite of static analysis techniques that leverage the increased exposure to detect certain classes of errors and highlight pitfalls that could become bugs in a production-ready system, and (5) a hardware/software co-simulation technique, called selective focus , that makes it practical to simulate an entire embedded system at arbitrary levels of detail and still obtain workable performance.; These techniques are demonstrated with three example systems: a cellular telephone, a hand-held web browser, and a cellular base station. In each of these cases, our methodology and tools show substantial improvement in the ability to debug these complex embedded systems. |