"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/

Reply via email to