Maintenance of embedded software systems is faced with multiple challenges, including the exploration and analysis of the actual system’s runtime behavior.
As a fundamental technique, tracing can be used to capture data about runtime behavior as a whole, and represents one of the few methods to observe and record data about embedded systems within their production environments.
In this paper we present a software-based, function boundary tracing approach for embedded software systems. It uses static binary instrumentation, which implies only lightweight memory and performance overheads.
To further reduce these overheads, instrumentation can be configured per trace, i.e., activated only for a specified group of functions without having to recompile the system.
The technique can be characterized by its robust implementation and its versatile usage. It is complemented by a visualization framework that allows for analysis and exploration of a system’s runtime behavior, e.g., to examine thread interaction.
To show the technique’s applicability, we conclude with a case study that has been applied to an industrial embedded software system. The technique enables developers to replace common debugging workarounds, such as log output and guesswork, by an efficient trace analysis technique.
Independence of a debug interface is a key characteristic of the technique and enables its usage in production environments as well.
As a result, such integration has potential to ease another common problem of software maintenance: reproducing bugs that are encountered in a customer’s production environment.
As future work, we plan to enable longer trace runs by triggering serialization of trace data to persistent storage while a target system is idle. In addition, we want to integrate approaches that help automate selective instrumentation for given storage size and software system. Complementary, enriching trace data by operating system events, e.g., scheduling, would provide valuable extra information.
To read the external content in full, download the paper from the author archives at the University of Potsdam