それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

printfでデバッグをやめた理由

Rubyにはスレッドがある。クローラーをスレッド化して楽をしようとしてた。スレッドをさんざん使い回した挙句、高速化にはあまり効果を示さないことがわかった。

ただ、デバッグにはめちゃくちゃ便利だとわかった。

任意の場所で簡易コンソール

def debug(obj)
	t = Thread.new(obj) {|obj|
		s=""
		begin
			eval s
			STDOUT.print "Enter:>"
			STDOUT.flush
		end while s=gets
	}
	t.join
end


class Hoge

   def aaa
       debug(self)
   end
end 

なるほど。スレッドってそういうことだったのですね。
これでPrintを何度も仕込まなくてよくなった。

簡易コンソールでブレイクポイント

BUID_STATUS="DEBUG"

def debug(obj)
   return if BUID_STATUS!="DEBUG"
	t = Thread.new(obj) {|obj|
		s=""
		begin
			eval s
			STDOUT.print "Enter:>"
			STDOUT.flush
		end while s=gets
	}
	t.join
end

これでどんな場所でも簡易コンソールを開くことが出来る。べっっべ便利じゃ。