A layered model for building debugging and monitoring tools
In this article we describe a new layered model for building debugging and monitoring tools. The model separates the different functionalities of these tools into a number of well-defined layers and defines standardized interfaces between these layers. Individual layers can be implemented independently. Lower layers hide the operating system and architecture dependencies from the higher layers, thus allowing the same higher layers to be used on different systems. On the other hand, the same lower layers can be shared by similar tools, each of which might have a different implementation of the high-level functions. We have built a working implementation of this model and working prototype debuggers, profilers, and data tracers that use this model.