Ruby Programming/Standard Library/Tracer

Tracer
Ruby's built-in "tracer.rb" file shows you method by method which lines are called. To use it:

ruby -rtracer script_name.rb

for example, the following code:

produces the following result:

C:\dev\digitalarchive_trunk>ruby -rtracer test.rb
 * 0:test.rb:1::-: class A
 * 0:test.rb:1:Class:>: class A
 * 0:test.rb:1:Class:<: class A
 * 0:test.rb:1::C: class A
 * 0:test.rb:2::-:  def setup
 * 0:test.rb:2:Module:>:  def setup
 * 0:test.rb:2:Module:<:  def setup
 * 0:test.rb:5::-:  def go
 * 0:test.rb:5:Module:>:  def go
 * 0:test.rb:5:Module:<:  def go
 * 0:test.rb:1::E: class A
 * 0:test.rb:11::-: instance = A.new
 * 0:test.rb:11:Class:>: instance = A.new
 * 0:test.rb:11:Object:>: instance = A.new
 * 0:test.rb:11:Object:<: instance = A.new
 * 0:test.rb:11:Class:<: instance = A.new
 * 0:test.rb:12::-: instance.setup
 * 0:test.rb:2:A:>:  def setup
 * 0:test.rb:3:A:-:   @instvar = 1`
 * 0:test.rb:4:A:<:  end`
 * 0:test.rb:13::-: instance.go
 * 0:test.rb:5:A:>:  def go
 * 0:test.rb:6:A:-:   var = 2
 * 0:test.rb:7:A:-:   4.times do |@instvar|
 * 0:test.rb:7:Integer:>:   4.times do |@instvar|
 * 0:test.rb:8:A:-:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:>:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:<:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:A:-:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:>:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:<:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:A:-:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:>:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:<:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:A:-:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:>:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:8:Fixnum:<:    @instvar=@instvar*var end # #=>0,2,4,6 last assignment of @instvar is 6
 * 0:test.rb:7:Integer:<:   4.times do |@instvar|
 * 0:test.rb:6:A:<:   var = 2