So I was reading this paper called "A Survey of Dynamic Program Analysis Techniques and Tools" and there's a listing of the different instrumentation techniques.
So according to that paper, we have source code, binary and byte-code instrumentation. The source code one is really clear, but I can't see the difference between byte-code and binary instrumentation:
"Binary instrumentation adds instrumentation code by modifying or re-writing compiled code"
and:
Bytecode instrumentation performs tracing within the compiled code. [...] Static [bytecode] instrumentation involves changing the compiled code offline before execution
There's this post: What are the differences between the three methods of code coverage analysis? speaking about "on-the-fly" instrumentation, which is really close to the "dynamic byte-code instrumentation" and "dynamic binary instrumentation".
Dynamic binary instrumentation (implemented as Just-In-Time compilers) is performed after the program has been loaded into memory
and
Dynamic [byte-code] instrumentation works when the application is already running
If anyone could explain me this difference between binary and byte-code instrumentation, that would be great.
Thank you very much.
Thibault