From: Bart Masschelein Date: 2005-09-24T06:23:38+09:00 Subject: Re: Tracer question Sorry, code should be require 'tracer' Tracer.on class SomeClass def someMethod puts "caller #{caller}" end end Tracer.off someClass = SomeClass.new someClass.someMethod Bart Masschelein wrote: > Hello all, > > Is there a reason why these lines of code: > > require 'tracer' > > Tracer.on > > class SomeClass > def someMethod > puts "Some text" > end > end > > produce the following output: > > #0:TracerTest.rb:3:Tracer:<: Tracer.on > #0:TracerTest.rb:3:Tracer:<: Tracer.on > #0:TracerTest.rb:5::-: class SomeClass > #0:TracerTest.rb:5:Class:>: class SomeClass > #0:TracerTest.rb:5:Class:<: class SomeClass > #0:TracerTest.rb:5::C: class SomeClass > #0:TracerTest.rb:6::-: def someMethod > #0:TracerTest.rb:6:Module:>: def someMethod > #0:TracerTest.rb:6:Module:<: def someMethod > #0:TracerTest.rb:5::E: class SomeClass > #0:TracerTest.rb:11::-: Tracer.off > caller TracerTest.rb:13 > > Why isn't it : > > #0:TracerTest.rb:3:Tracer:<: Tracer.on > #0:TracerTest.rb:3:Tracer:<: Tracer.on > #0:TracerTest.rb:5::-: class SomeClass > #0:TracerTest.rb:5:Class:>: class SomeClass > #0:TracerTest.rb:5:Class:<: class SomeClass > #0:TracerTest.rb:5::C: class SomeClass > #0:TracerTest.rb:6::-: def someMethod > #0:TracerTest.rb:6:Module:>: def someMethod > #0:TracerTest.rb:8:Module:<: def someMethod > #0:TracerTest.rb:9::E: class SomeClass > #0:TracerTest.rb:11::-: Tracer.off > caller TracerTest.rb:13 > > So you know when browsing through the require tree, on which line a > class or method begins, and where it ends. I guess it is not a Tracer > issue, but rather a set_trace_func method(), by the return values you > get. > > This would be useful, as you could first make a model of your code by > changing the Tracer, and when the execution starts, stopping the > Tracer, as it reduces the overhead (because of the > set_trace_func_method() with some filters on). Then later, you can > call caller, and by the filename and linenumber exactly know where > this fits in the model. > > Or are there other ways to do this? > > Bart. > > > > > > >