[lttng-dev] Capturing User-Level Function Calls/Returns
ahmadkhorrami
ahmadkhorrami at ut.ac.ir
Wed Jul 15 17:39:50 EDT 2020
Hi Steven and Mathieu,
Firstly, many thanks! This method seems to be the most efficient method.
But, IIUC, what you suggest requires source code compilation. I need an
efficient dynamic method that, given the function address, captures its
occurrence and stores some information from the execution context. Is
there anything better than Uprobes perhaps with no trap into the kernel?
Why do we need traps?
Regards.
On 2020-07-15 23:15, Mathieu Desnoyers wrote:
> ----- On Jul 15, 2020, at 2:28 PM, rostedt rostedt at goodmis.org wrote:
>
> On Wed, 15 Jul 2020 20:37:16 +0430
> ahmadkhorrami <ahmadkhorrami at ut.ac.ir> wrote:
>
> Hi,
> What is the most efficient way to capture occurrence of a function
> call/return of a binary program in userspace?
> It seems the answer is Uprobes. 1) Am I right?
> But Uprobes use "int" instruction which leads to a switch into kernel
> mode. 2) Wouldn't it be better to avoid this transition?
> I'm looking forward to your reply and will be happy to read your
> opinions.
> Regards.
>
> Hi, I believe LTTng has utilities that can help you trace user space
> programs.
Indeed, it is documented here:
https://lttng.org/docs/#doc-liblttng-ust-cyg-profile
If your program is generating function entry/exit at a very
high rate (which goes beyond your available I/O throughput and
lasts longer than the memory you have available for ring buffers),
you will also probably want to use the "blocking-timeout" option
documented at:
https://lttng.org/docs/#doc-enabling-disabling-channels
Thanks,
Mathieu
> I think there's also a users ftrace like utility that Namhyung was
> working on. But I don't know where in the development that is.
>
> -- Steve
More information about the lttng-dev
mailing list