"Michael Gong" <[EMAIL PROTECTED]> writes:
> I don't know about inserting call at the basic block level, but I am
> quite sure inserting calls at the function level could be done by
> aspect-oriented-programming (AOP). [...]
Another possibility, coming soon[1], is to use systemtap[2] probes:
% stap -e 'probe process("./a.out").function("*") { log (probefunc()) }'
Among major differences between this approach and AOP are:
- no recompilation of the target program is required: it's more like
running a quick background scriptable debugger
- the instrumentation instead would be inserted into the
programs on the fly via breakpoints, probably overall slower
- we rely on OS kernel facilities for those breakpoints,
which means Linux only at this time
- the instrumentation (log...) language is rubber-padded and safe
- there can be no interference amongst concurrently running
instrumentation packages, or upon the main program: it's non-intrusive
FWIW, yet another technology possibility I know of for this sort of
data collection is frysk[3].
- FChE
[1] "coming soon" == as soon as those kernel facilities allow
ptrace-style breakpoint insertion into user space. At this time,
we can only probe the kernel proper.
[2] http://sources.redhat.com/systemtap/
[3] http://sources.redhat.com/frysk/