Instrumentation (computer programming)

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In the context of computer programming, instrumentation refers to an ability to monitor or measure the level of a product's performance, to diagnose errors and to write trace information.[1] Programmers implement instrumentation in the form of code instructions that monitor specific components in a system (for example, instructions may output logging information to appear on screen). When an application contains instrumentation code, it can be managed using a management tool. Instrumentation is necessary to review the performance of the application. Instrumentation approaches can be of two types: Source instrumentation and binary instrumentation.


In programming, instrumentation means the ability of an application to incorporate:

  • Code tracing - receiving informative messages about the execution of an application at run time.
  • Debugging and (structured) exception handling - tracking down and fixing programming errors in an application under development.[2]
  • Profiling - a means by which dynamic program behaviors can be measured during a training run with a representative input. This is useful for properties of a program which cannot be analyzed statically with sufficient precision, such as alias analysis.
  • Performance counters - components that allow the tracking of the performance of the application.
  • Computer data logging - components that allow the logging and tracking of major events in the execution of the application.


Instrumentation is limited by execution coverage. If the program never reaches a particular point of execution, then instrumentation at that point collects no data. For instance, if a word processor application is instrumented, but the user never activates the print feature, then the instrumentation can say nothing about the routines which are used exclusively by the printing feature.

Some types of instrumentation may cause a dramatic increase in execution time. This may limit the application of instrumentation to debugging contexts.

See also[edit]