An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Types in logic programming
A new approach to debugging optimized code
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Optimally profiling and tracing programs
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using assertions in declarative and operational models for automated debugging
Journal of Systems and Software
Debugging heterogeneous distributed systems using event-based models of behavior
ACM Transactions on Computer Systems (TOCS)
Linear and structural event sequence analysis
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Low-cost, concurrent checking of pointer and array accesses in C programs
Software—Practice & Experience
A lightweight architecture for program execution monitoring
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Coca: an automated debugger for C
Proceedings of the 21st international conference on Software engineering
A generic approach to monitor program executions
Proceedings of the 1999 international conference on Logic programming
Software Testing Techniques
Program Monitoring and Visualization: An Exploratory Approach
Program Monitoring and Visualization: An Exploratory Approach
Does OO Sync with How We Think?
IEEE Software
Generic Techniques for Source-Level Debugging and Dynamic Program Slicing
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
A Configurable Automatic Instrumentation Tool for ANSI C
ASE '98 Proceedings of the 13th IEEE international conference on Automated software engineering
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
ATOM: a flexible interface for building high performance program analysis tools
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Symbolic Profiling for Multi-paradigm Declarative Languages
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
Analyzing & debugging ILP data mining query execution
Proceedings of the sixth international symposium on Automated analysis-driven debugging
Theory and Practice of Logic Programming
Expressive pointcuts for increased modularity
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Hi-index | 0.00 |
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.