summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/lib/tracer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/lib/tracer.rb')
-rw-r--r--ruby_1_8_5/lib/tracer.rb167
1 files changed, 0 insertions, 167 deletions
diff --git a/ruby_1_8_5/lib/tracer.rb b/ruby_1_8_5/lib/tracer.rb
deleted file mode 100644
index 71aa49c306..0000000000
--- a/ruby_1_8_5/lib/tracer.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-# tracer.rb -
-# $Release Version: 0.2$
-# $Revision: 1.8 $
-# $Date: 1998/05/19 03:42:49 $
-# by Keiju ISHITSUKA(Nippon Rational Inc.)
-#
-# --
-#
-#
-#
-
-#
-# tracer main class
-#
-class Tracer
- @RCS_ID='-$Id: tracer.rb,v 1.8 1998/05/19 03:42:49 keiju Exp keiju $-'
-
- @stdout = STDOUT
- @verbose = false
- class << self
- attr :verbose, true
- alias verbose? verbose
- attr :stdout, true
- end
-
- EVENT_SYMBOL = {
- "line" => "-",
- "call" => ">",
- "return" => "<",
- "class" => "C",
- "end" => "E",
- "c-call" => ">",
- "c-return" => "<",
- }
-
- 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
-
- def stdout
- Tracer.stdout
- end
-
- 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
-
- def off
- set_trace_func nil
- stdout.print "Trace off\n" if Tracer.verbose?
- end
-
- def add_filter(p = proc)
- @filters.push p
- end
-
- def set_get_line_procs(file, p = proc)
- @get_line_procs[file] = p
- end
-
- 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
-
- def get_thread_no
- if no = @threads[Thread.current.object_id]
- no
- else
- @threads[Thread.current.object_id] = @threads.size
- end
- end
-
- 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
-
- Single = new
- def Tracer.on
- if block_given?
- Single.on{yield}
- else
- Single.on
- end
- end
-
- def Tracer.off
- Single.off
- end
-
- def Tracer.set_get_line_procs(file_name, p = proc)
- Single.set_get_line_procs(file_name, p)
- end
-
- def Tracer.add_filter(p = proc)
- Single.add_filter(p)
- end
-
-end
-
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
-
-if $0 == __FILE__
- # direct call
-
- $0 = ARGV[0]
- ARGV.shift
- Tracer.on
- require $0
-elsif caller(0).size == 1
- Tracer.on
-end