Feature #3809: allow multiple set_trace_func() calls
http://redmine.ruby-lang.org/issues/show/3809

Author: Suraj Kurapati
Status: Open, Priority: Normal
Assigned to: Yukihiro Matsumoto, Category: core

Hello,

The current set_trace_func() method in Ruby 1.8 and 1.9 cannot be safely
called multiple times because each call overwrites the current trace_func.

Please consider adding a mechanism, such as the multitrace library[1], to
allow users to attach multiple tracing functions simultaneously to Ruby.

An alternative to the multitrace library[1] is to add some new methods:

* attach_trace_func(proc) #=> proc
* detach_trace_func(proc) #=> proc

When you call attach_trace_func(), it will register your tracing 
function and return it.  You can pass the same tracing function 
later to detach_trace_func() to unregister it.

Here is a convoluted example:

  detach_trace_func(attach_trace_func(proc {}))

Here is a more realistic example:

  foo = proc {}
  bar = proc {}
  attach_trace_func foo
  # ...
  attach_trace_func bar
  # ...
  detach_trace_func foo
  detach_trace_func bar

Thanks for your consideration.

[1]: http://codeidol.com/other/rubyckbk/Testing,-Debugging,-Optimizing,-and-Documenting/Running-Multiple-Analysis-Tools-at-Once/


----------------------------------------
http://redmine.ruby-lang.org