linux-perf-users.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).