All of lore.kernel.org
 help / color / mirror / Atom feed
From: Milian Wolff <milian.wolff@kdab.com>
To: Christian Convey <christian.convey@gmail.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: newbie question: tracing userspace call/return sequences
Date: Fri, 06 Jan 2017 11:16:28 +0100	[thread overview]
Message-ID: <3722511.TPbTubHR2j@milian-kdab2> (raw)
In-Reply-To: <CAPfS4ZwrYePYFoNtf7GOvMpJKABY8ZdCf+MB+xc+Ksa7ubRATQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2027 bytes --]

On Thursday, January 5, 2017 10:49:13 PM CET Christian Convey wrote:
> Hi guys,
> 
> Any suggestions for the best way to achieve something with perf tools?
> 
> Systemtap has an example script, "para-callgraph.stp", that reports
> the *sequence* of userspace function calls and returns made by an
> application.
> 
> I'd like to perform that kind of analysis using perf tools rather than
> Systemtap, because I recently learned that Canonical considers
> Systemtap to be unsupported.  (E.g., it's pretty broken on Ubuntu
> 14.04.)
> 
> I think I've gotten fairly close with these steps:
> 
>   perf probe --exec=./fib -f --add='*'
>   perf probe --exec=./fib -f --add='*:%return'
>   perf record -e 'probe_fib:*' -aR ./fib
>   perf script -g py
>   perf script -s ./perf_script.py
> 
> The generated Python script contains two Python functions for each
> userspace function that's called during the execution of "fib".  This
> seems to work, at least on a small, toy program.
> 
> But AFAICT, this has two major downsides relative to the
> Systemtap-based approach, in cases where the target program has
> thousands of functions:
> 
> (1) The generated Python script will be huge, and
> 
> (2) It will require some non-trivial Python coding for me to tweak
> what that script does for every call/return event.
> 
> Any suggestions for a good/better way to pull this off?

There is a catch-all handler:

*trace_unhandled*, if defined, is called after for any event that
 doesn't have a handler explicitly defined for it.  The standard set
 of common arguments are passed into it:

----
def trace_unhandled(event_name, context, common_cpu, common_secs,
        common_nsecs, common_pid, common_comm):
    pass
----

Maybe you can use that one instead? I'd still be interested to know whether 
you can get all required information. If not, extending the API is doable.

Bye
-- 
Milian Wolff | milian.wolff@kdab.com | Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel: +49-30-521325470
KDAB - The Qt Experts

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5903 bytes --]

  reply	other threads:[~2017-01-06 10:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06  3:49 newbie question: tracing userspace call/return sequences Christian Convey
2017-01-06 10:16 ` Milian Wolff [this message]
2017-01-06 20:05   ` Christian Convey
2017-01-07 23:44     ` Masami Hiramatsu
2017-01-09 15:19       ` Christian Convey
2017-01-09 17:03         ` Naveen N. Rao
2017-01-09 17:59           ` Christian Convey
2017-01-10  0:25             ` Masami Hiramatsu
2017-01-10  2:32               ` Christian Convey
2017-01-06 18:49 ` Andi Kleen
2017-01-06 19:07   ` Christian Convey
2017-01-07  4:37     ` Namhyung Kim
2017-01-07 18:26       ` Christian Convey
2017-01-07 19:08       ` Andi Kleen
2017-01-08  8:08         ` Namhyung Kim
2017-01-06 19:23   ` Arnaldo Carvalho de Melo
2017-01-09 17:20 ` Frank Ch. Eigler
2017-01-09 18:08   ` Christian Convey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3722511.TPbTubHR2j@milian-kdab2 \
    --to=milian.wolff@kdab.com \
    --cc=christian.convey@gmail.com \
    --cc=linux-perf-users@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.