From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-15T12:39:20+09:00 Subject: [ruby-dev:132] thread debug[Re: tracer] けいじゅ@日本ラショナルです. In [ruby-dev :00129 ] the message: "[ruby-dev:129] Re: tracer ", on Aug/15 10:27(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|# ほんとうは, スレッドのプログラムをもう少しデバッグしやすくして欲しい >|# んですが... >どういう風にして欲しいんでしょうか.具体的に提案して下さいま >せ.でも,スレッドはすっごい複雑なので,提案を採用できるかど >うかはわかりませんが. 簡単にいえば, thread中のえらの位置を調べるのが面倒なんですよね... th = Thread.start{ foo } th.value では駄目ですよね... -:5:in `value': undefined local variable or method `foo' for main(Object) from -:5 エラーは分かっても行が分かりません. th0 = Thread.current th = Thread.start{ begin foo rescue th0.raise $! end } -:6: undefined local variable or method `foo' for main(Object) となり. これでもだめ... 私が知っている唯一の方法は, 以下のものです: th0 = Thread.current th = Thread.start{ begin foo rescue print $!, "\n" for l in $@ print l, "\n" end end } undefined local variable or method `foo' for main(Object) -:4 -:10:in `start' -:2 できるにはできるんですが, いちいちめんどくさいと思いませんか? というわけでリクエストとしては: 1. スレッドが例外によって停止した場合, 全体が止まってそのバックトレー スを出力する実行オプションとかがほしい 2. スレッドが例外によって停止した場合, 全体が止まってそのバックトレー スを出力するような, スレッド起動時オプションがあると嬉しい. Thread.start(FAIL_THEN_EXIT) do ... end この機能は, 多くのスレッドプログラミングでは有効だと思いますが? __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---