[erlang-questions] Tracing ejabberd
Francesco Cesarini
francesco@REDACTED
Wed May 14 09:08:03 CEST 2008
You are probably running Erlang in embedded mode, which loads all the
modules at startup. I assume that the runtime tools application is not
part of the build. That is where dbg is.
Also, because of the strange setup with ejabberd, you probably need to
play around before you are able to get any trace messages.
to run dbg on an ejabbed node and bypass the group leader io problem,
you have to
* Start a distributed Erlang Node
* Connect to the Ejabberd Cluster
* Start the tracer
* Connect the ejabberd nodes to the tracer
* Pick which processes and functions to trace
In pseudo code, you would do something like this:
erl -sname dbg -setcookie COOKIE (Where COOKIE is the same cookie as
the ejabberd node)
1> net_adm:ping(EJABBERDNODENAME). (Where EJABBERDNODENAME is the
distributed Erlang node name running on EjabberD).
2> dbg:tracer().
3> lists:foreach(fun(Node) -> dbg:n(Node) end, nodes()).
You can now use all of the trace commands and get the ourput redirected
to your shell. They include dbg:p/2 to pick which processes to trace and
dbg:tp for global calls and dbg:tpl for local ones.
hope this helps,
Francesco
--
http://www.erlang-consulting.com
Tuncer Ayaz wrote:
> On Tue, May 13, 2008 at 9:28 PM, Vlad12 <vsarpe@REDACTED> wrote:
>
>> Hello,
>>
>> Can anyone tell me why every time i run ejabberd on "live" mode (opens an
>> erlang shell at the node ejabberd@REDACTED) it does not allow me to run
>> dbg or fprof functions?
>>
>> shell$ ./ejabberdct live
>>
>> This is what i get if i try to run dbg:tracer(). :
>>
>> (ejabberd@REDACTED)4> dbg:tracer().
>> ** exited: {undef,[{dbg,tracer,[]},
>> {erl_eval,do_apply,5},
>> {shell,exprs,6},
>> {shell,eval_loop,3}]} **
>>
>
> If I may trust my slowly building Erlang skills this
> error means that the system is unable to locate either
> the module 'dbg' or the method 'dbg:tracer'.
>
> A wild guess is that ejabberd's runtime config does not
> include too many additional libs/modules.
>
> The solution to your problem is something which I hope
> to know soon after having digged deeper into ejabberd.
> I know this doesn't solve your issue but may help
> clear the situation.
>
>
>> =ERROR REPORT==== 13-May-2008::13:21:29 ===
>> Error in process <0.334.0> on node 'ejabberd@REDACTED' with exit value:
>> {undef,[{dbg,tracer,[]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}
>>
>>
>> The error message is similar if i run fprof:trace(start). :
>>
>> (ejabberd@REDACTED)9> fprof:trace(start).
>> {'EXIT',<0.354.0>,
>> {undef,[{dbg,trace_port,[file,"fprof.trace"]},
>> {fprof,open_dbg_trace_port,2},
>> {fprof,handle_req,3},
>> {fprof,server_loop,1}]}}
>>
>> =ERROR REPORT==== 13-May-2008::13:25:53 ===
>> Error in process <0.354.0> on node 'ejabberd@REDACTED' with exit value:
>> {undef,[{dbg,trace_port,[file,"fprof.trace"]},{fprof,open_dbg_trace_port,2},{fprof,handle_req,3},{fprof,server_loop,1}]}
>>
>> Help is greatly appreciated
>>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
>
More information about the erlang-questions
mailing list