Skip to content

Latest commit

 

History

History
41 lines (34 loc) · 1.05 KB

README.md

File metadata and controls

41 lines (34 loc) · 1.05 KB

erltrace

This is an Erlang dtrace consumer, it allows you to consume dtrace results directly from within Erlang.

implementation

erltrace is implemented as a NIF, currently it's working in a syncronouse blocking way - sorry for that. So call times are usually in the range of 200-400 microseconds so it shouldn't be that bad.

usage

First is to create a handle:

{ok, Handle} = erltrace:open().

next is to compile a script:

erltrace:compile(
  Handle,
  "dtrace:::BEGIN {trace(\"Hello World\");} syscall:::entry { @num[execname] = count(); }"
).

and start the script

erltrace:go(Handle).

now you can walk or the results:

erltrace:consume(Handle).
erltrace:walk(Handle).

known problems

There is a problem in OS X that causes invalid access when there are printf elements in the trace, it works fine under Solaris So.

credits

I borrowed heaviely from the code of node-libdtrace and python-dtrace.