Re: Capturing User-Level Function Calls/Returns
Namhyung Kim <[email protected]> Thu, 16 Jul 2020 10:04:15 +0900
| Newsgroups | org.kernel.vger.linux-trace-users,org.lttng.lists.lttng-dev |
|---|---|
| Message-ID | <CAM9d7chE3WQm2e4EA4i09Q1hOaGt2hrPHoF2d0tjqhciPceB9g@mail.gmail.com> |
Hi all, On Thu, Jul 16, 2020 at 3:28 AM Steven Rostedt <[email protected]> wrote: > > On Wed, 15 Jul 2020 20:37:16 +0430 > ahmadkhorrami <[email protected]> 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. > > 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. It's in https://github.com/namhyung/uftrace Basically it also requires recompilation to add mcount calls for each function. But it now also supports dynamic tracing without any recompilation.. :) It's still experimental and has some limitation, but the idea is to copy first 5 bytes (on x86_64) somewhere and replace it to a call instruction. Thanks Namhyung