Thread.critical を使うスクリプトを Tracer でトレースすると予期しない動
作になります。以下のように変更すると正しくなるようです。
福本 淳
fukumoto / imasy.or.jp
Index: tracer.rb
===================================================================
RCS file: /src/ruby/lib/tracer.rb,v
retrieving revision 1.12
diff -u -r1.12 tracer.rb
--- tracer.rb 7 Nov 2002 19:18:14 -0000 1.12
+++ tracer.rb 17 Mar 2003 13:01:33 -0000
@@ -119,6 +119,7 @@
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,
@@ -127,7 +128,7 @@
klass || '',
EVENT_SYMBOL[event],
get_line(file, line))
- Thread.critical = false
+ Thread.critical = saved_crit
end
Single = new