Content deleted Content added
No edit summary |
removed repeated text |
||
(26 intermediate revisions by 23 users not shown) | |||
Line 1:
{{Short description|Modification of software to allow for analysis}}
{{
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]] – A comprehensive dynamic tracing framework for troubleshooting kernel and application problems on production systems in real time, implemented in [[Solaris (operating system)|Solaris]], [[macOS]], [[FreeBSD]], and many other platforms and products.
* [[Application Response Measurement]] - standardized instrumentation [[Application programming interface|API]] for [[C (programming language)|C]] and [[Java (programming language)|Java]]▼
* [[Java Management Extensions|''Java Management Extensions'' (JMX)]] – Java technology for managing and monitoring applications, system objects, devices (such as printers), and service-oriented networks.
▲* [[Application Response Measurement]]
* [[Dynamic recompilation]] – a feature of some emulators and virtual machines where the system may recompile some part of a program during execution.
==References==
{{reflist}}
* [http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx Introduction to Instrumentation and Tracing: Microsoft Developer Network]
* [
* [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]]
Line 35 ⟶ 40:
[[Category:Management systems]]
[[Category:Debugging]]
{{Comp-sci-stub}}
|