0

Ruby でコードをデバッグするためのブレークポイント関数を実装しています。

私のブレークポイント関数はbreakpoint以下のコードのようです。

 def breakpoint s
    color_s = "\033[1m\033[33m"
    color_f = "\033[0m\033[22m"
    line= (caller.first.split ":")[1]
    puts  "#{color_s}#{Time.new.strftime("%H:%M:%S")} line:#{line} -- #{s.to_s}#{color_f}"
    gets
 end

 a = 3
 puts "Hello World"
 breakpoint "test"

次のような出力が生成されます

 Hello World
 19:21:33 line:11 -- test

注意:line:11関数が呼び出される行番号です。

私の質問は、プログラムスタックから変数名と値を取得する方法です。たとえば、上記のコードでは次のようになります。a = 3

4

2 に答える 2

0

私は澤の答えを修正しました:

 def breakpoint s,a
    color_s = "\033[1m\033[33m"
    color_f = "\033[0m\033[22m"
    line= (caller.first.split ":")[1]
    vars = eval('local_variables',a).map{|v| "#{v.to_s}= #{eval(v.to_s,a)}"}.join ";"
    puts  "#{color_s}#{Time.new.strftime("%H:%M:%S")} line:#{line} -- #{s.to_s} -- #{vars}#{color_f}"
    gets
 end

 a = 3
 g = 5
 puts "Hello World"
 breakpoint "test",binding
 f = 54

出力:

Hello World
22:58:40 line:13 -- test -- a= 3;g= 5;f=
于 2013-07-29T17:27:42.480 に答える