set_trace_func.
set_trace_func tiene la sintáxis:
set_trace_func( proc ) → proc set_trace_func( nil ) → nilEstablece
 proc como un manejador para crear una traza 
de la ejecución. Si es nil desactivamos la traza.
El proc toma 6 parámetros:
proc es invocado cada vez que ocurre un evento.
Los eventos son:
proc.
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ cat -n ex0682.rb 
     1  class Test
     2    def initialize
     3      puts "In initialize"
     4    end
     5    def test
     6      a = 1
     7      b = 2
     8    end
     9  end
    10  
    11  set_trace_func proc {|event, file, line, id, binding, classname|
    12    printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
    13  }
    14  t = Test.new
    15  t.test
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ ruby ex0682.rb 
    line ex0682.rb:14               false
  c-call ex0682.rb:14        new    Class
    call ex0682.rb:2  initialize     Test
    line ex0682.rb:3  initialize     Test
  c-call ex0682.rb:3        puts   Kernel
  c-call ex0682.rb:3       write       IO
In initialize
c-return ex0682.rb:3       write       IO
  c-call ex0682.rb:3       write       IO
c-return ex0682.rb:3       write       IO
c-return ex0682.rb:3        puts   Kernel
  return ex0682.rb:3  initialize     Test
c-return ex0682.rb:14        new    Class
    line ex0682.rb:15               false
    call ex0682.rb:5        test     Test
    line ex0682.rb:6        test     Test
    line ex0682.rb:7        test     Test
  return ex0682.rb:7        test     Test
Otro método que puede ser usado para obtener mas información sobre la traza es trace_var
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ cat -n trace_var.rb 
     1  trace_var :$_, proc {|v| puts "$_ is now '#{v}'" }
     2  $_ = "hello"
     3  $_ = ' there'
~/rubytesting/programmingRuby/src_of_programming_ruby_by_dave_thomas$ ruby trace_var.rb $_ is now 'hello' $_ is now ' there'
Casiano Rodriguez León 2015-01-07