けいじゅ@いしつかです.

ruby-devに降ります.

この問題自身はc-funcのトレースをデフォルトでやめたことによります. とい
うことで, 現時点では仕様で昔の振る舞いに戻したいなら, 

Tracer::display_c_call = true

してください. ということになると思います.


それと, もうひとつ気がついたのが, 最新版のrubyでは, 

# ruby -rtracer gg.rb

でトレースメッセージがでるはずなのに出なくなっていることです. これは以
前, 同じような問題が起こったらしく, その時は, 

--
r29280 | nobu | 2010-09-17 08:30:30 +0900 (Fri, 17 Sep 2010) | 4 lines

* lib/tracer.rb: count only non-internal libraries in stack trace,
  ignoring custom_require.  [ruby-core:31858]
--

で修正されたのですが, また, caller の出力形式がが変わったためまた再発
生したためのようです.

ruby 1.9.2 p180 では以下のような形式で

["<internal:lib/rubygems/custom_require>:29:in `require'", "<internal:lib/rubygems/custom_require>:29:in `require'"]

最新版では以下のような形式になっています.

["/usr/local/apps/rubyware/ruby-1.9.3-20110325/lib/ruby/1.9.1/rubygems/custom_require.rb:42:in `require'", "/usr/local/apps/rubyware/ruby-1.9.3-20110325/lib/ruby/1.9.1/rubygems/custom_require.rb:42:in `require'"]

これは, 下の今の形式が新たな仕様になったのでしょうか? それとも, caller
のバグですか?

さらに, 質問ですが, 上記で, c-funcのトレースをしないのは仕様だと言いま
したが, c-funcでもブロックを持つメソッドはトレースをしたほうがよい気も
しています.  set_trace_func で設定するトレース用のprocで呼び出された
c-funcがブロック付きかどうか簡単に判断するよう放ってあります?

In the message: "redmine", on Jun/11 15:07(JST) 
SASADA Koichi writes:


>http://redmine.ruby-lang.org/issues/3660
>こちら,何かわかるでしょうか.コメント頂けると幸いです.
>
>-- 
>// SASADA Koichi at atdot dot net
>

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju / ishitsuka.com <<---