From: "NAKAMURA, Hiroshi" Date: 2002-11-08T10:14:59+09:00 Subject: [ruby-dev:18685] Re: ENABLE/DISABLE_TRACE (was Re: source file name at -r option) なひです。 > From: NAKAMURA Hiroshi [mailto:nakahiro@sarion.co.jp] > Sent: Friday, November 08, 2002 12:05 AM > もう一点、initializeが呼ばれません。 この件、すなわちc-callの子ノードの評価はデフォルトではトレースしない ため、個別にトレースしたいものにマーク付けするように変更したという 件ですが、これを元に戻したい(デフォルトではトレースする)です。 # 現状は、ユーザの観点からするとかなり厳しい。例えば現在でもまだ、 # ユーザ定義のhashなどがHashの実装の中から呼ばれても # トレースできません。 [ruby-dev:18352]の中田さんの問題提起は以下でした。 | 1) ruby自体をフルパスで指定したときに、tracer.rbでruby自身の実 | 行ファイルが読まれてバイナリが出力されてしまう | | 2) rb_str_new()などもString.allocateを介するようになったために、 | コンパイルの最中に大量のトレースが発生する | | 3) c-funcの呼び出し中にも同様 | | 1と2に関しては、たぶんコンパイル中はトレースを呼び出さないよう | にしたほうがいいんじゃないか、と思うんですが。 | | 3はちと微妙ですが、おそらくc-funcの最中に不用意にコンテキストス | イッチなどが起きてしまうのは、まずいこともありそうな気がします。 このうち、2と3の「大量にトレースが発生する」という件は、 ruby本体側では全てtraceしておき、tracer.rb、profile.rb、 debug.rb、coverage.rb(なひ自作)側で 表示や処理を抑制することで対処できます。 落としちゃった情報は復活できないので、ruby本体側では、 (速度に致命的な問題がなければ)可能な限りトレースして欲しいです。 残る問題は、3に関して中田さんが最後に上げられている | 3はちと微妙ですが、おそらくc-funcの最中に不用意にコンテキストス | イッチなどが起きてしまうのは、まずいこともありそうな気がします。 なんですが、これを、c-call以下は全てトレースしない、ではない 方法で解決する方法はありませんでしょうか。