From: miura Date: 2008-06-17T17:56:51+09:00 Subject: [ruby-list:45079] Re: Rubyスレッド/プロセスの情報取得方法 三浦と申します set_trace_funcを引っ掛けるのはタイムアウトしてからでいいんじゃないかな? と思い作ってみました。 #!/usr/bin/ruby require "pp" def recursive(n=100) if n>0 rec2(n-1) end end def rec2(n) recursive(n) end Thread.new do sleep(1) tf = lambda do |event, file, line, id, binding, klass| Thread.current[:bs] = binding end while Thread.list.any?{|n| n.status == "run" and n[:bs].nil? } do set_trace_func(tf) Thread.pass set_trace_func(nil) end Thread.list.each do |th| p th if th[:bs] then puts eval("caller", th[:bs]) end print "\n" end Thread.main.raise("END") end loop do recursive end