A Tracer Driver to Enable Debugging, Monitoring and Visualization of CLP Executions from a Single Tracer
Tracers provide users with useful information about program executions. A tracer can be used for many purposes. Embedded in an interactive console, it enables users to investigate program executions. It can also be the front-end of visualization tools, or it can be used by an automatic process to monitor execution behaviors. For each purpose, the requested information is similar but slightly different. It is therefore important to be able to interact with the tracer in order to tune the sent information.
We propose a so-called “tracer driver”. From a single tracer, it provides a powerful front-end for multiple dynamic analysis tools while limiting the overhead of the trace generation. The tracer driver can be used both synchronously and asynchronously. The relevant execution information is specified by flexible event patterns. A large variety of trace data can be given either systematically or “on demand”. The proposed tracer driver has been designed and experimented in the context of constraint logic programming, within Codeine, a tracer for GNU-Prolog , and connected to a set of graphical tools.