Code can be injected into a compiled application through the use of probes
comprised of instrumentation code. Probes can be implemented in a custom
high level language that hides low level instruction details. A directive
file contains instructions on injecting a probe into a compiled
application. An instrumentation engine reads these instructions and
injects the probe into the compiled application at the appropriate
injection points. Multiple probes can be used, and can be stored in a
probe library. Each probe can inject code into the application at, for
example, a package, class, method, or line of the compiled application.
Calls can also be made to external runtime libraries.