From: Shugo Maeda Date: 2005-03-16T12:01:14+09:00 Subject: [ruby-dev:25925] Re: C level set_trace_func 前田です。 Yukihiro Matsumoto wrote: > |> そう思いつつ手を抜いていました。手が空いたら書き直します。 > | > |実装してみました。 > |パッチを添付します。 > > コミットしてみませんか。ただ、ドキュメントもほしいんですが。 > 簡単なもので構わないんで。 了解です。 Cレベルのインタフェイスのドキュメントはどこに書くのがいいでしょうか。 > |> それはそれとして、今のAPIだとRubyで定義されたメソッドで例外が発生する > |> と、メソッドからの脱出を追えないのですが、これはどうしたものでしょう。 > |> rescueもフックできるようにして、raise時に保存した$!.backtraceとrescue時 > |> の$!.backtraceを比較する、とかですかね。 > | > |こっちはどうでしょうね。 > > なんでメソッドからの脱出を追えないのかよくわからないので、も > うちょっと教えてもらえませんか。オフィスで聞けばよいのかもし > れませんが、それだとMLの他のメンバーには分からないから。^^;;; えっと、メソッドから脱出した時点でそのメソッドの実行時間の記録を終了 しないといけないのですが、現状ではraiseはフックできますがrescueは フックできないので、どのレベルのメソッドまでジャンプしたのかが わかりません。 現状では"line"でがんばるしかないのかなと思いますが、profile.rbは そこまでしてないようですね。 def foo begin bar rescue # この時点でbarの実行時間の計測を終了しないといけない end end def bar ... end def baz raise "error" end