14 comments

[ 2.6 ms ] story [ 41.6 ms ] thread
DTrace is a great tool that doesn't get enough attention. I'm glad to see articles like this that show off the basics of how to use it.

DTrace support is also one reason I'd really like to see FreeBSD supported as a first-class platform on AWS and/or Azure. Maybe this'll be the year...

thanks for your input. indeed, we are going to follow it up with some live examples.
I don't see any info about the version they're running, commands "dtrace -l" and "dtrace -f write" just fail and print the usage on my Fedora 18 (package systemtap-sdt-devel-2.1-2.fc18.x86_64). Too bad, DTrace seems interesting !
I am not sure about how well DTrace works on Fedora. What Oracle is shipping with Oracle Linux is not compatible with GPL licensing (read CDDL) and hence can't be included as it is by other Linux distributions. Having said, I will try the fedora 18 package when I get a chance and reply back here. But in the meanwhile, for best results - please try it on one of the OSes I mentioned in blog post.

Also, just to double check you are running those commands with sudo right? dtrace won't work without root access.

Also forgot to mention, I am using DTrace that ships with Mountain Lion and DTrace api version is - Sun D 1.6.2.

DTrace requires support from the kernel to work. It started out in Solaris, then was ported to FreeBSD (which is why it's in Mac OS X). I don't think it's supported by Linux in general, but it appears that Oracle ported DTrace to Oracle Linux just recently: https://www.networkworld.com/news/2013/030113-oracle-ports-d...

If you want to give DTrace a try, you could try PC-BSD (the desktop version of FreeBSD) -- there are preinstalled images for VMWare, VirtualBox, etc., and live USB images if you prefer: http://www.pcbsd.org/en/download.html

You are using SystemTap and not DTrace. It probably has different and incompatible CLI.
oh you're certainly right ! I just queried yum for a bin/dtrace binary, got this package, and assumed dtrace was part of systemtap!
For the JVM we have btrace (https://kenai.com/projects/btrace), which also integrates nicely with dtrace. It also has a good VisualVM plugin (http://visualvm.java.net/plugins.html).
Really great to see more articles on dtrace recently. The one feature I was missing from them all, is a way to sort and parse dtrace logs programmatically. Since dtrace can dump method calls out-of-order, some sorting is necessary to see the correct program flow.

So here's a start: dtrace-json

https://github.com/doublerebel/dtrace-json

It's in IcedCoffeeScript but could easily be adapted to Ruby or another language. I used it to debug a native iOS module for a Titanium Mobile app. HTH others as much as it did me!