From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-08-16T13:23:31+09:00 Subject: [ruby-dev:143] Re: thread debug[Re: tracer] けいじゅ@日本ラショナルです. In [ruby-dev :00139 ] the message: "[ruby-dev:139] Re: thread debug[Re: tracer] ", on Aug/16 00:59(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|th = Thread.start{ >| foo >|} >| >|th.value >|-:5:in `value': undefined local variable or method `foo' for main(Object) >| from -:5 >| >|エラーは分かっても行が分かりません. > >Thread#valueで例外を発生する時,$@も同時に設定するようにしま >しょうか? それで,問題は解決する? でも, 5行目でfailしていることも確かなんですよね... それよか, exitの代わりに abort 見たいな関数を用意して頂けると良いかも: th = Thread.start{ begin foo rescue abort end } abortはその時点でのバックトレースを出力して停止するんですね. reacueが入れ子になっている時に, どこが原因で停止したのか分からなくなる 時があるので, rescueまわりのデバッグには有効かも? >|1. スレッドが例外によって停止した場合, 全体が止まってそのバックトレー >| スを出力する実行オプションとかがほしい >|2. スレッドが例外によって停止した場合, 全体が止まってそのバックトレー >| スを出力するような, スレッド起動時オプションがあると嬉しい. > >全体を停止するんですか.有効なのかしら? 原因となったスレッドのバックトレースを出してもらえるなら, 有効だと思う んですが... 有効じゃないと思われる深い理由があるのかしら? >Thread.exit_on_exception(TRUE/FALSE)ってな感じではどう? >スレッド毎に指定できないと駄目か. 両方あると嬉しいですね. でもこっちの方が良いかも: set_trace_func見たいな仕様です. カレントスレッドに足して設定し, その 後, そのスレッドからフォークした小スレッドにも引き継がれる. thread debugとは直接関係ありませんが, thread関係のリクエストを: 3. Thread.join関係 現在のThread.joinはスレッドを指定しなくてはなりませんよね. * Thread.wait Process.wait見たいな機能で任意の(子)スレッドが終了するまで待つ. * Thrad.join thread,... 待つスレッドを複数指定できるメソッド でも, Thread.waitみたいのは難しいのかな? 親/小スレッドっていう概念がな いですものね? __ ..........................................石塚 圭樹@日本ラショナル... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---