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