`ruby -r debug` catchpoint problem
test-debug.rb like this:
And starting the debugger like this:
ruby -r debug test-debug.rb
By default, the catchpoint is
StandardError, but it doesn't work:
test-debug.rb:1:raise 'test' (rdb:1) catch Catchpoint StandardError. (rdb:1) c test-debug.rb:1:in `<main>': test (RuntimeError)
And the debugger exits without catching the exception.
But, by setting the catchpoint to
NilClass (or one of its ancestors), then it works:
test-debug.rb:1:raise "test" (rdb:1) catch NilClass Set catchpoint NilClass. (rdb:1) c test-debug.rb:1: `' (NilClass) from test-debug.rb:1:in `<main>' test-debug.rb:1:raise "test"
And the debugger does not exit and allows further debugging.
By looking at
lib/debug.rb, it looks like that the
set_trace_func callback it sets assumes that
$! will be set to the exception to be raised when a
'raise' event occurs. But it is not the case,
$! seems to always be