This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Inserting profiling function calls


"Michael Gong" <mwgong@cs.utoronto.ca> 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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]