From: Ryuichi Sakamoto Date: 2009-06-09T00:06:00+09:00 Subject: [ruby-dev:38582] [Bug #1588] ブロックの中断でset_trace_funcのreturnイベントが呼び出されない Bug #1588: ブロックの中断でset_trace_funcのreturnイベントが呼び出されない http://redmine.ruby-lang.org/issues/show/1588 起票者: Ryuichi Sakamoto ステータス: Open, 優先度: Normal Target version: 1.9.x ruby -v: ruby 1.9.2dev (2009-06-08 trunk 23650) [i386-darwin9.7.0] set_trace_funcでフックを設定した時に、ブロック中のbreakや例外で脱出をすると 'return'や'c-return'イベントが発生せずフックが呼び出されません。 $ cat tracefunc.rb set_trace_func(proc {|event, file, line, id, binding, klass| puts "'#{id}' event: #{event}" unless /line/ =~ event }) 1.times do break end $ ./ruby1.9 -v tracefunc.rb ruby 1.9.2dev (2009-06-08 trunk 23650) [i386-darwin9.7.0] 'set_trace_func' event: c-return 'times' event: c-call 1.8ではc-returnが呼ばれます。 $ ruby -v tracefunc.rb ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9] 'times' event: c-call 'times' event: c-return この影響でプロファイラでの計測が正常に出来ません。 ---------------------------------------- http://redmine.ruby-lang.org