Match Specifications

Siri Hansen (ETO) <>
Wed Oct 24 13:11:11 CEST 2001


I don't think the parameter to enable_trace should be a list, it should rather be {enable_trace,procs} (but I didn't try).

Also, you should be aware that by specifying the MatchHead as [] you implicitly say that the match spec is true only for functions with zero arguments. If you mean to hit all functions i your module ping your MatchHead should be '_'.

Good luck!

/siri

-----Original Message-----
From: Francesco Cesarini [mailto:]
Sent: Wednesday, October 24, 2001 12:37 PM
To: 
Subject: Match Specifications


Hi!
I got stuck with match specifications and wonder if anyone can find the
error or confirm if it is a bug.. When the match specification is
successful, I want to enable the tracing of all process related
activities, but the flags do not seem to get activated. Other actions
(Even if I have not tried all) seem to work ok. Here is the problem
stripped to a bare minimum:

3> P = ping:start().
<0.37.0>
4> erlang:trace(P, true, [call]).
1
5> erlang:trace_pattern({ping,'_','_'}, [{[],[],[{enable_trace,
[procs]}]}],[local]).
5
6> ping:send(P).
pong
7> flush().
Shell got {trace,<0.37.0>,call,{ping,loop,[]}}
ok
8> erlang:trace_info(P, flags).
{flags,[call]}
9> ping:send(P).
pong
10> flush().
Shell got {trace,<0.37.0>,call,{ping,loop,[]}}
ok

-module(ping).
-export([start/0, send/1, loop/0]).

start() ->
    spawn(ping, loop, []).

send(Pid) ->
    Pid ! {self(), ping},
    receive
        pong -> pong
    end.

loop() ->
    receive
        {Pid, ping} ->
             spawn(crash, do_not_exist, []),
             Pid ! pong,
             loop()
      end.

Thanks!
Francesco
--
http://www.erlang-consulting.com




More information about the erlang-questions mailing list