Tracer驱动程序的设计与实现:约束逻辑程序的简易高效动态分析
Design and Implementation of a Tracer Driver: Easy and Efficient Dynamic Analyses of Constraint Logic Programs
摘要:
跟踪程序为用户提供有关程序执行的有用信息。在这篇文章中,我们提出了一个“跟踪驱动程序”。从单个跟踪程序开始,它提供了一个强大的前端,使多个动态分析工具能够轻松实现,同时限制了跟踪生成的开销。相关的执行事件由灵活的事件模式指定,并且可以系统地或“按需”提供大量跟踪数据。建议的跟踪驱动程序已被设计的约束逻辑编程的背景下,实验已经在GNU-Prolog。现有工具提供的执行视图可以很容易地模拟,开销可以忽略不计。实验结果表明,所描述的架构的灵活性和权力导致良好的性能。跟踪程序驱动程序开销与两个跟踪事件之间的平均时间成反比。尽管跟踪器驱动程序的原理独立于被跟踪的程序设计语言,但它最适合于高级语言,例如约束逻辑编程,其中每个被跟踪的执行事件包含许多低级执行步骤。此外,约束逻辑编程特别难以调试。当前环境没有提供所有有用的动态分析工具。他们可以从我们的跟踪驱动程序中受益匪浅,该驱动程序可以以非常低的成本集成动态分析。
英文摘要:
Tracers provide users with useful information about program executions. In this article, we propose a ``tracer driver''. From a single tracer, it provides a powerful front-end enabling multiple dynamic analysis tools to be easily implemented, while limiting the overhead of the trace generation. The relevant execution events are specified by flexible event patterns and a large variety of trace data can be given either systematically or ``on demand''. The proposed tracer driver has been designed in the context of constraint logic programming; experiments have been made within GNU-Prolog. Execution views provided by existing tools have been easily emulated with a negligible overhead. Experimental measures show that the flexibility and power of the described architecture lead to good performance. The tracer driver overhead is inversely proportional to the average time between two traced events. Whereas the principles of the tracer driver are independent of the traced programming language, it is best suited for high-level languages, such as constraint logic programming, where each traced execution event encompasses numerous low-level execution steps. Furthermore, constraint logic programming is especially hard to debug. The current environments do not provide all the useful dynamic analysis tools. They can significantly benefit from our tracer driver which enables dynamic analyses to be integrated at a very low cost.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。