<div dir="ltr">Hi Jérémie,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 30, 2014 at 10:31 PM, Jérémie Galarneau <span dir="ltr"><<a href="mailto:jeremie.galarneau@efficios.com" target="_blank">jeremie.galarneau@efficios.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">On Wed, Jul 30, 2014 at 9:58 AM, Dmitri Shubin <<a href="mailto:sbn@tbricks.com" target="_blank">sbn@tbricks.com</a>> wrote:<br>


> AFAIU<br>
> lttng enable-event -u prov:probe --filter '$ctx.vpid==12345'<br>
> enables probe for all processes and then drops unmatched.<br>
><br>
<br>
Correct. The event won't be traced.<br></blockquote><div><br></div><div>I.e. it won't be written to trace buffer/file, ok.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

The arguments won't be evaluated if the event is not enabled. However,<br>
when an event is enabled, the arguments are evaluated regardless of<br>
the result of the filter's expression evaluation since it could be<br>
based on the event's content.<br>
<br>
Let me know if that's not what you meant.<br></blockquote><div><br></div><div>Yes, exactly.</div><div>I pass stack trace as an argument to the tracepoint.</div><div>So it's computed just to be dropped...</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">> The only way I can do it now is playing with LTTNG_HOME variable setting it<br>



> to different paths for each process.<br>
<br>
I'm not sure I understand what you mean here. Care to elaborate?<br></blockquote><div><br></div><div><div>$ cat a.c </div><div>#include <stdlib.h></div><div>#include <unistd.h></div><div>#include <lttng/tracef.h></div>

<div><br></div><div>int main()</div><div>{</div><div>    for (;;) {</div><div>        tracef("hello", (abort(), 1));</div><div>        sleep(1);</div><div>    }</div><div><br></div><div>    return 0;</div><div>
}</div>
<div>$ gcc a.c -llttng-ust</div><div>$ mkdir /tmp/lttng-home-1 /tmp/lttng-home-2<br></div></div><div><div>$ LTTNG_HOME=/tmp/lttng-home-1 ./a.out &</div><div>[1] 13029</div><div>$ LTTNG_HOME=/tmp/lttng-home-2 ./a.out &</div>

<div>[2] 13032</div></div><div><div>$ export LTTNG_HOME=/tmp/lttng-home-1</div><div>$ lttng create</div><div>Spawning a session daemon</div><div>Session auto-20140731-211730 created.</div><div>Traces will be written in /tmp/lttng-home-1/lttng-traces/auto-20140731-211730</div>

<div>$ lttng enable-event -u lttng_ust_tracef:event<br></div><div>UST event lttng_ust_tracef:event created in channel channel0</div><div>$ lttng start</div><div>Tracing started for session auto-20140731-211730</div><div>
$ </div>
<div>[1]-  Aborted                 (core dumped) LTTNG_HOME=/tmp/lttng-home-1 ./a.out</div></div><div><br></div><div>I.e. here I have separate session per each process I want to trace.</div><div>It would be easier if I can have channel per process, like e.g.</div>

<div>$ lttng enable-channel -p 12345<br></div><div><br></div><div>For instance in dtrace I can explicitly specify process I want to trace by appending its PID to probe name.</div><div><br></div><div>Regards!</div>
</div></div></div>