Content deleted Content added
→See also: Added bullet item for DTrace. |
removed repeated text |
||
(21 intermediate revisions by 19 users not shown) | |||
Line 1:
{{Short description|Modification of software to allow for analysis}}
{{more footnotes|date=December 2013}}
In [[computer programming]], '''instrumentation''' is the act of modifying software so that [[analysis]] can be performed on it.<ref>A. Sabetta and H. Koziolek, “Measuring Performance Metrics: Techniques and Tools,” in Dependability metrics. Springer, 2008, pp. 226–232.</ref>
Generally, instrumentation either modifies [[source code]] or [[binary code]]. Execution environments like the JVM provide separate interfaces to add instrumentation to program executions, such as the [[Java_Virtual_Machine_Tools_Interface|JVMTI]], which enables instrumentation during program start.
▲* [[Debugging]] and (structured) [[exception handling]] - tracking down and fixing programming errors in an application under development.<ref>{{cite web|url=http://www.drdobbs.com/architecture-and-design/commenting-testing-and-instrumenting-cod/229300224|title=Commenting, Testing, and Instrumenting Code|date=January 3, 2011|accessdate=January 29, 2014}}</ref>
▲* [[Profiling (computer programming)|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 [[static program analysis|analyzed statically]] with sufficient precision, such as [[alias analysis]].
Instrumentation can include:
* [[Tracing (software)|Logging events]] such as failures and operation start and end <ref>[http://pic.dhe.ibm.com/infocenter/rtrthelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.rational.testrt.doc%2Ftopics%2Fcinstruovw.html Source Code Instrumentation Overview at IBM website]</ref>
* Measuring and logging the duration of operations
== Limitations ==
Instrumentation is limited by execution coverage.
Instrumentation increases the execution time of a program. In some contexts, this increase might be dramatic and hence limit the application of instrumentation to debugging contexts. The instrumentation overhead differs depending on the used instrumentation technology.<ref>Reichelt, D. G., Bulej, L., Jung, R., & van Hoorn, A. (2024, May). Overhead Comparison of Instrumentation Frameworks. In Companion of the 15th ACM/SPEC International Conference on Performance Engineering (pp. 249-256).</ref>
==See also==
* [[Hooking]]
* [[Instruction set simulator]]
* [[Runtime intelligence]]
* [[Software performance analysis]]
* [[Hardware performance counter]]
* [[DTrace]]
* [[Java Management Extensions|''Java Management Extensions'' (JMX)]] –
* [[Application Response Measurement]]
* [[Dynamic recompilation]]
==References==
{{reflist}}
* [http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx Introduction to Instrumentation and Tracing: Microsoft Developer Network]
* [https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html Apple Developer Tools: Introduction to Instruments]
* [http://sourceware.org/systemtap/ SystemTap] provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system.
* [https://github.com/corelight/cwrap cwrap] Auto wrap C and C++ functions with instrumentation.
[[Category:Software optimization]]
|