I am considering using dyninst for a heavy-weight instrumentation
where I would like to monitor each memory access instruction.
In addition, on each monitored instruction I would like to store the
call path for a later use.
I noticed in the documentation that I can use getCallStack() API to
get the call stack.
I would like to know how getCallStack() works. Does it perform a call
stack unwind or does dyninst maintain a shadow call stack? I imagine
it is the former.
If it is unwinding based, perhaps calling getCallStack() very
frequently is expensive, is there any alternative?
-Milind
|