mTrace

Our society increasingly relies upon embedded computer systems that have become essential to all aspects of our lives. Faster, cheaper, smaller, more sophisticated, and more power-efficient embedded computer systems spur new applications that require very complex software stacks. The growing software and hardware complexity and tightening time-to-market deadlines make software development and debugging the most critical aspect of embedded system development. A recent study found that software developers spend between 50%-75% of their time debugging programs, yet the nation still loses approximately $20-$60 billion a year due to software bugs and glitches. The recent shift toward multicore architectures makes software development and debugging even more challenging. Traditional debugging is time consuming and may interfere with program execution, causing some bugs to become irreproducible and making it unusable in real-time environments. Moreover, tracing a processor's internal state during execution is only feasible for short program segments and requires large on-chip buffers or wide trace ports, either of which increases system cost and limits scalability.

This project involves developing the next generation of trace compression methods and infrastructure to make continuous, real-time, unobtrusive, and cost-effective program, data, and bus tracing possible in embedded systems. The approach relies on on-chip hardware to record the processor state and corresponding software modules in the debugger. The novel insight is that a sequence of trace records can be translated, without loss of information, into a much shorter sequence of miss events using small hardware structures. The few remaining miss events are then further compressed using highly-effective yet simple-to-implement encoding schemes, yielding heretofore unseen compression ratios.

The new tracing and debugging hardware resources can help programmers find difficult and intermittent software bugs faster, thus improving productivity. For example, reducing debugging time by just one percent amounts to hundreds of millions of dollars annually in saved salaries, with a concomitant reduction in software cost and time to market. Moreover, higher quality software may eliminate errors in medical, automotive, or mission-critical devices and thus save lives.

Tools:

mcfTrace: a Pin tool for capturing control-flow trace in multithreaded programs (User guide, {dtracker}tools/mcfTrace/mcfTrace.zip: Source Files{/dtracker})

mlvTrace: a Pin tool for capturing load value trace in multithreaded programs (User guide, {dtracker}tools/mlvTrace/mlvTrace.zip: Source Files{/dtracker})

mcfTRaptor: a Pin tool for capturing and compressing control flow in multithreaded programs (User guide, {dtracker}tools/mcfT-Raptor/mcfTRaptor.zip: Source Files{/dtracker}).

mlsTrace: a Pin tool for capturing memory referencing traces in multithreaded programs; user selects tracing load only, store only, or both load and store traces (User guide, {dtracker}tools/mlsTrace/mlsTrace.zip: Source Files{/dtracker})