Numerous activities require low-overhead monitoring of software applications, for example, run-time verification, test coverage measurement, and data collection. To support monitoring, current approaches usually involve extensive instrumentation of the software to be monitored, causing significant performance penalties and also requiring some means to ensure that the monitoring code will not cause incorrect behavior in the monitored application. To tackle this problem, we have explored a hardware-supported framework for monitoring and observation of software-intensive systems. In our approach, we leverage multi-core processor architectures to create a non-intrusive, predictable, fine-grained, and highly extensible general purpose monitoring framework. We have developed a novel architecture that augments each core with programmable extraction logic to observe an application executing on the core as its program state changes. Based on this architecture, we present a novel and highly efficient algorithm for tracking MC/DC coverage.