Feature #3809
closedallow multiple set_trace_func() calls
Description
=begin
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 library1, to
allow users to attach multiple tracing functions simultaneously to Ruby.
An alternative to the multitrace library1 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.
=end
        
           Updated by shyouhei (Shyouhei Urabe) about 15 years ago
          Updated by shyouhei (Shyouhei Urabe) about 15 years ago
          
          
        
        
      
      - Status changed from Open to Assigned
=begin
=end
        
           Updated by mame (Yusuke Endoh) almost 13 years ago
          Updated by mame (Yusuke Endoh) almost 13 years ago
          
          
        
        
      
      - Description updated (diff)
- Target version set to 2.6
        
           Updated by trans (Thomas Sawyer) almost 13 years ago
          Updated by trans (Thomas Sawyer) almost 13 years ago
          
          
        
        
      
      Isn't this taken care of by the new TracePoint API?
        
           Updated by ko1 (Koichi Sasada) almost 8 years ago
          Updated by ko1 (Koichi Sasada) almost 8 years ago
          
          
        
        
      
      Please use TracePoint API.
        
           Updated by ko1 (Koichi Sasada) almost 8 years ago
          Updated by ko1 (Koichi Sasada) almost 8 years ago
          
          
        
        
      
      - Status changed from Assigned to Closed