README

Path: README
Last Update: Tue Nov 11 18:15:31 -0800 2008

XRay

Description

XRay provides a lightweight yet powerful toolbox for troubleshooting Ruby applications when things stop making sense. XRay includes GDB and DTrace tooling as well as a Thread Dump utility that can dump the stack trace of all the thread in your Ruby VM when you send a QUIT signal.

GDB

Copy the gdb_macros file provided in the gem as your ~/.gdbinit file. You will find more details on how to use them, in my Troubleshooting Ruby Shortcut

Thread Dump

After patching your Ruby VM with caller_for_all_threads_patch_for_MRI_1.8.6.diff (or caller_for_all_threads_patch_for_MRI_1.8.7.diff) as explained in this document, you can install a signal handler in charge of dumping the stack trace for all the threads in your Ruby VM with:

  require "rubygems"
  require "xray/thread_dump_signal_handler"

You can then trigger a thread dump at any time with

  kill -QUIT <pid of your ruby process>

DTrace

Fire DTrace Application Probes

See XRay::DTrace::Tracer

Out-of-the-box Rails DTrace Instrumentation ***

You are one require away from triggering automatically DTrace events for Rails requests, database access and template rendering. As simple as

     # environment.rb
     Rails::Initializer.run do |config|

       ...

       config.after_initialize do
         require "rubygems"
         require "xray/dtrace/rails/enable_tracing"
       end
     end

See

  • lib/xray/dtrace/railsenable_tracing.rb
  • lib/xray/dtrace/action_controller_tracing_extension.rb
  • lib/xray/dtrace/active_record_tracing_extension.rb

Author

Philippe Hanrigou, ph7spot.com

[Validate]