| Class | Tracer |
| In: |
tracer.rb
|
| Parent: | Object |
tracer main class
| EVENT_SYMBOL | = | { "line" => "-", "call" => ">", "return" => "<", "class" => "C", "end" => "E", "c-call" => ">", "c-return" => "<", } |
| Single | = | new |
| verbose | -> | verbose? |
| stdout | [RW] | |
| verbose | [RW] |
# File tracer.rb, line 37 def initialize @threads = Hash.new if defined? Thread.main @threads[Thread.main.object_id] = 0 else @threads[Thread.current.object_id] = 0 end @get_line_procs = {} @filters = [] end
# File tracer.rb, line 146 def Tracer.set_get_line_procs(file_name, p = proc) Single.set_get_line_procs(file_name, p) end
# File tracer.rb, line 81 def get_line(file, line) if p = @get_line_procs[file] return p.call(line) end unless list = SCRIPT_LINES__[file] begin f = open(file) begin SCRIPT_LINES__[file] = list = f.readlines ensure f.close end rescue SCRIPT_LINES__[file] = list = [] end end if l = list[line - 1] l else "-\n" end end
# File tracer.rb, line 106 def get_thread_no if no = @threads[Thread.current.object_id] no else @threads[Thread.current.object_id] = @threads.size end end
# File tracer.rb, line 68 def off set_trace_func nil stdout.print "Trace off\n" if Tracer.verbose? end
# File tracer.rb, line 54 def on if block_given? on begin yield ensure off end else set_trace_func method(:trace_func).to_proc stdout.print "Trace on\n" if Tracer.verbose? end end
# File tracer.rb, line 114 def trace_func(event, file, line, id, binding, klass, *) return if file == __FILE__ for p in @filters return unless p.call event, file, line, id, binding, klass end saved_crit = Thread.critical Thread.critical = true stdout.printf("#%d:%s:%d:%s:%s: %s", get_thread_no, file, line, klass || '', EVENT_SYMBOL[event], get_line(file, line)) Thread.critical = saved_crit end
ruby-doc.org is hosted and maintained by James Britt and Happy Camper Studios, a Ruby application development company in Phoenix, Arizona. The site was created in 2002 as part of the Ruby Documentation Project to promote the Ruby language and to help other Ruby hackers.
Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.
For more information on the Ruby programming language, visit ruby-lang.org.
Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.