Hello again,
over the weekend, I have made a modified version of the debug.rb file
to also handle the "raise" event (from eval.c").
Given the file debug-test.rb:
def foo(n)
n / 4
end
def bar(m)
m*foo(m)
end
foo(10)
bar('a')
bar(122)
I can do, for example:
ruby -r mydebug debug-test.rb
debug-test.rb:1:def foo(n)
(rdb:-) c
undefined method `/' for "a"
from debug-test.rb:2:in `foo'
from debug-test.rb:6:in `bar'
from debug-test.rb:10
debug-test.rb:2: n / 4
(rdb:-) list
1 def foo(n)
--> 2 n / 4
3 end
4
5 def bar(m)
6 m*foo(m)
7 end
8
9 foo(10)
10 bar('a')
11 bar(122)
(rdb:-) where
--> frame 2:debug-test.rb:2:in `foo'
frame 1:debug-test.rb:6:in `bar'
frame 0:debug-test.rb:10
(rdb:-) p n
"a"
(rdb:-) p m
./mydebug.rb:37:in `debug_eval':(eval):1:in `foo': undefined local
variable or m
ethod `m' for #<Object:0x40185ed4>
nil
(rdb:-) d
at level 1
(rdb:-) w
frame 2:debug-test.rb:2:in `foo'
--> frame 1:debug-test.rb:6:in `bar'
frame 0:debug-test.rb:10
(rdb:-) list
5 def bar(m)
--> 6 m*foo(m)
7 end
8
9 foo(10)
10 bar('a')
11 bar(122)
(rdb:-) p m
"a"
(rdb:-) p n
./mydebug.rb:37:in `debug_eval':(eval):1:in `bar': undefined local
variable or m
ethod `n' for #<Object:0x40185ed4>
nil
(rdb:-) d
at level 0
(rdb:-) list
9 foo(10)
--> 10 bar('a')
11 bar(122)
(rdb:-) c
debug-test.rb:2:in `foo': undefined method `/' for "a" (NameError)
from debug-test.rb:6:in `bar'
from debug-test.rb:10