Software Instrumentation
Torsten Kempf, Kingshuk Karuri, Lei Gao · Wiley Encyclopedia of Computer Science and Engineering · 2008
Abstract Software instrumentation is a technique that is widely used in software profiling, performance analysis, optimization, testing, error detection, and virtualization. Instrumentation, which involves adding extra code to an application for monitoring some program behavior, can be performed either statically (i.e., at compile time) or dynamically (i.e., at runtime). Static instrumentation techniques range from simple manual techniques to compiler/assembler‐based instrumentation and link‐time or post‐link executable editing. Dynamic instrumentation techniques are often more complex to implement than the static ones, but they can track dynamically linked libraries and indirect branches that are difficult to handle through static instrumentation.