Hello,

Here is an experimental script that I wrote yesterday to generate a
html flow graph using dtrace output. The links in the html output
point to a URL with opengrok content so that studying the flow is
easy.
Have a look at mscgen3.html in the attachement and if the output
interests you, go through rest of the mail.
I am planning to have an automatic testing/profiling setup for my org.
Thought of posting this across when still unencumbered. Once I start
putting/enhancing this with the setup inside the org, I may not be
able to post the details.
The attachement contains the following files:

[1] mscgen1.d: D script used to trace bash (bash is hardcoded). Used
as "./mscgen1.d -p <PID of bash>"
[2] mscgen.tcl: tcl script used to generate the html output. Used as
"./mscgen.tcl"
[3] mscgen.cfg: input parameters, output parameters & opengrok URL for
[2] are to be configured here
[4] mscgen.private.cfg: additional config parameters that mscgen.tcl
uses internally
[5] msc_style3.css: style sheet used for rendering
[6] mscgen3.txt: output of the dtrace script on my system
[7] mscgen3.html: html rendering of mscgen3.txt. External links point
to opengrok URL. The < & > arrows in front of the functions point to
the  next & previous occurance of the functions.

View mscgen3.html to have a glimpse of the  output.
To try it, execute dtrace and store its output. Set the parameters in
[3] suitably and execute the script to get similar output. Better
configurability to limit the modules/functions traced at a given point
of time so that the number of activated probes are within meaningful
limits, etc.

Some possible enhancements for those who want to pick from here: auto
generation & execution of D-scripts based on application specific
probemodules, html generation can be enhanced to handle huge outputs
by outputting multiple pages, an "analytics" package can be plugged in
to derive statistics(module coverage, function coverage,...) and
generate summary report.
If memory profiling is done, the output can contain color coding to
indicate unallocated memory, some more improvements on the navigation
front,....
Python might be a better option due to its dictionary support, but I
had other considerations.

I am still experimenting with opengrok & dtrace and would welcome any
suggestions...

-Shiv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mscgen.tar.bz2
Type: application/x-bzip2
Size: 50530 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/opengrok-discuss/attachments/20080526/d6593e70/attachment.bin>

Reply via email to