All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Fr?d?ric Weisbecker <fweisbec@gmail.com>,
	2nddept-manager@sdl.hitachi.co.jp, Ingo Molnar <mingo@elte.hu>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Using perf probe with arguments throws a fatal error.
Date: Wed, 25 Aug 2010 14:47:39 +0900	[thread overview]
Message-ID: <4C74AE7B.1010705@hitachi.com> (raw)
In-Reply-To: <20100824095658.GC14431@linux.vnet.ibm.com>

(2010/08/24 18:56), Srikar Dronamraju wrote:
>>>
>>> 1000 [srikar@llm69 uprobesv3.git]$  cat
>>> /sys/kernel/debug/tracing/events/probe/do_fork/format
>>> name: do_fork
>>> ID: 817
>>> format:
>>>         field:unsigned short common_type;       offset:0; size:2; signed:0;
>>>         field:unsigned char common_flags;       offset:2; size:1; signed:0;
>>>         field:unsigned char common_preempt_count;       offset:3; size:1; signed:0;
>>>         field:int common_pid;   offset:4;       size:4; signed:1;
>>>         field:int common_lock_depth;    offset:8;       size:4; signed:1;
>>>
>>>         field:unsigned long __probe_ip; offset:16;      size:8; signed:0;
>>>         field:u64 %ip;  offset:24;      size:8; signed:0;
>>
>> Hmm, it could be caused by "u64"...
>> OK, maybe I should update perf to support those.
>>
>> BTW, let me check that you use perf for the latest kernel?
>>
> 
> 
> Yes, I am using perf from latest kernel and this happens on both x86
> and x86_64 boxes.
> 
> Just for curiosity I tried printing the format for perf probe
> do_fork ip=%ip and here it is 
> 
> 1001 [srikar@llm69 uprobesv3.git]$ sudo perf probe do_fork ip=%ip 
> 1001 [srikar@llm69 uprobesv3.git]$ cat /sys/kernel/debug/tracing/events/probe/do_fork/format 
> name: do_fork
> ID: 818
> format:
>         field:unsigned short common_type;       offset:0; size:2; signed:0;
>         field:unsigned char common_flags;       offset:2; size:1; signed:0;
>         field:unsigned char common_preempt_count;       offset:3; size:1; signed:0;
>         field:int common_pid;   offset:4;       size:4; signed:1;
>         field:int common_lock_depth;    offset:8;       size:4; signed:1;
> 
>         field:unsigned long __probe_ip; offset:16;      size:8; signed:0;
>         field:u64 ip;   offset:24;      size:8; signed:0;
> 	          ^^
> 
> print fmt: "(%lx) ip=%llx", REC->__probe_ip, REC->ip
>                   ^^				 ^^
> 
> The differences I see when a name is given we refer the name, while in
> the previous case we refer the register %ip.

Ah, I remembered that, yeah, perf doesn't support those raw regsiters,
dereferences, etc.
Hmm, this should be solved, but not so simple as just removing "%",
because there are also special variables ($retval, $stack) and
dereferences(+8(+10(%sp)), etc).

I think the simplest solution is just setting "argX" name for each
argument (if user omitted its name) in kprobe-tracer (because
trace-cmd will face same problem).
e.g.
 # echo "p do_fork %ip" > tracing/kprobe_events
will be translated as below
 # echo "p do_fork arg1=%ip" > tracing/kprobe_events

Thank you,


-- 
Masami HIRAMATSU
2nd Dept. Linux Technology Center
Hitachi, Ltd., Systems Development Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com

       reply	other threads:[~2010-08-25  5:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20100824045758.GA14431@linux.vnet.ibm.com>
     [not found] ` <4C738411.8080602@hitachi.com>
     [not found]   ` <20100824085401.GB14431@linux.vnet.ibm.com>
     [not found]     ` <4C738F09.3080108@hitachi.com>
     [not found]       ` <20100824095658.GC14431@linux.vnet.ibm.com>
2010-08-25  5:47         ` Masami Hiramatsu [this message]
2010-08-25  6:55           ` Using perf probe with arguments throws a fatal error Srikar Dronamraju

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=4C74AE7B.1010705@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --cc=2nddept-manager@sdl.hitachi.co.jp \
    --cc=acme@infradead.org \
    --cc=ananth@in.ibm.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=srikar@linux.vnet.ibm.com \
    /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.