From: "NAKAMURA, Hiroshi" Date: 2002-11-12T23:39:24+09:00 Subject: [ruby-dev:18754] Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 なひです。 patchが出せません。どなたかわかるようでしたらお願いします。^^; 1.6と1.7で、trace_funcで呼び出したcaller(0)の出力が 異なる場合があります。なひが把握しているのは、 トップレベルでNameErrorを起こした場合です。 ・set_trace_funcの中でcaller(0) ・トップレベルでNameErrorを起こす ・現行1.7。 $ cat trace.rb set_trace_func proc { |*arg| p arg p caller(0) } foo $ ruby -v trace.rb | head -3 trace.rb:5: undefined local variable or method `foo' for # (NameError) ruby 1.6.8 (2002-11-09) [i386-cygwin] ["line", "trace.rb", 5, nil, #, false] ["trace.rb:3", "trace.rb:4", "trace.rb:5"] $ ruby17 -v trace.rb | head -3 trace.rb:5: undefined local variable or method `foo' for # (NameError) ruby 1.7.3 (2002-11-07) [i386-cygwin] ["line", "trace.rb", 5, nil, #, false] ["trace.rb:3", "trace.rb:2"] $ 1.6では["trace.rb:3", "trace.rb:4", "trace.rb:5"] 1.7では["trace.rb:3", "trace.rb:2"] という違いです。