From: "NAKAMURA, Hiroshi" Date: 2002-11-05T15:31:00+09:00 Subject: [ruby-dev:18645] ENABLE/DISABLE_TRACE (was Re: source file name at -r option) なひです。 > From: nobu.nakada@nifty.ne.jp [mailto:nobu.nakada@nifty.ne.jp] > Sent: Sunday, September 22, 2002 8:54 PM > > それと、rb_require()を呼ぶ前にruby_sourcefileを0にしているため > > に、ライブラリが見付からないときのメッセージがちょっとおかしく > > なっている気がします。 > > これは、-rが複数あるときを考えてないというのは明らかなバグなん > ですが、他にもいくつか問題がありました。 > > > 1) ruby自体をフルパスで指定したときに、tracer.rbでruby自身の実 > 行ファイルが読まれてバイナリが出力されてしまう > > 2) rb_str_new()などもString.allocateを介するようになったために、 > コンパイルの最中に大量のトレースが発生する > > 3) c-funcの呼び出し中にも同様 > > 1と2に関しては、たぶんコンパイル中はトレースを呼び出さないよう > にしたほうがいいんじゃないか、と思うんですが。 > > 3はちと微妙ですが、おそらくc-funcの最中に不用意にコンテキストス > イッチなどが起きてしまうのは、まずいこともありそうな気がします。 ということで1.7においてENABLE/DISABLE_TRACEが 導入されたのですが、この影響で、inline block(正式名称は なんだっけ?)の中がトレースされなくなっています。 eachがc-callだから、かな? 結果的にdebug.rbでのデバッグもできないことになっていて、 さすがにこれは困るんですが、どう修正したもんでしょうか。 1. eachだけ特別扱いでtraceする。 2. String.allocateだけ特別扱いでtraceしない。 いずれにしても、 「c-funcの最中に不用意にコンテキストスイッチなどが 起きてしまうのは、まずいこともありそう」 の問題は残ります。この問題について、「○○だから大丈夫」 「××なので危ない」と言えるほどなひはrubyのソースを 理解できていません。^^;