Automating instrumentation: Identifying instrumentation points for monitoring constraints at runtime
Code instrumentation is the insertion of code, at the source code level or a lower code level, into specific locations of a program in order to verify, measure, or collect certain aspects of program behavior. The inserted code must not alter the behavior of the original program. Code instrumentation is a tool with various applications, such as debugging and performance analysis. Code instrumentation is also used by runtime monitors to ensure that programs are executing correctly with respect to specified properties. There exist programming languages that support runtime assertion checking, such as Eiffel and Anna. However, they require that the constraint checking code be inserted manually by the programmer. Many existing runtime monitors also require that the instrumentation be performed manually. Manual instrumentation is not only tedious, but can introduce many problems, such as human error and difficulty maintaining the software system. These drawbacks can be rectified by automating the instrumentation process. This work explores some of the issues automatic instrumentation faces and, using the DynaMICs runtime monitor framework, provides algorithms to statically locate the points in a program where behavior checking code should be inserted.
Payne, Mary F, "Automating instrumentation: Identifying instrumentation points for monitoring constraints at runtime" (2003). ETD Collection for University of Texas, El Paso. AAIEP10597.