Hostname: page-component-586b7cd67f-tf8b9 Total loading time: 0 Render date: 2024-11-29T06:51:52.325Z Has data issue: false hasContentIssue false

Generic program monitoring by trace analysis

Published online by Cambridge University Press:  12 August 2002

ERWAN JAHIER
Affiliation:
IRISA/INSA, Campus Universitaire de Beaulieu, F-35042 Rennes cedex, France
MIREILLE DUCASSÉ
Affiliation:
IRISA/INSA, Campus Universitaire de Beaulieu, F-35042 Rennes cedex, France

Abstract

Program execution monitoring consists of checking whole executions for given properties, and collecting global run-time information. Monitoring gives valuable insights and helps programmers maintain their programs. However, application developers face the following dilemma: either they use existing monitoring tools which never exactly fit their needs, or they invest a lot of effort to implement relevant monitoring code. In this paper, we argue that when an event-oriented tracer exists, the compiler developers can enable the application developers to easily code their own monitors. We propose a high-level primitive called foldt which operates on execution traces. One of the key advantages of our approach is that it allows a clean separation of concerns; the definition of monitors is totally distinct from both the user source code and the language compiler. We give a number of applications of the use of foldt to define monitors for Mercury program executions: execution profiles, graphical abstract views, and two test coverage measurements. Each example is implemented by a few simple lines of Mercury.

Type
Research Article
Copyright
© 2002 Cambridge University Press

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

Footnotes

This article extends Jahier & Ducassé (1999) and Jahier (2000b).