Pieces of codes in utils.rb
DEBUG_MODE=truedefdebug_printmsgprintmsgifDEBUG_MODEendRUBY=RbConfig.rubyREPL_RPOMPT='(rdbg)'defcreate_pseudo_terminal(boot_options: "-r debug/run")inject_lib_to_load_pathENV['RUBY_DEBUG_USE_COLORIZE']="false"ENV['RUBY_DEBUG_TEST_MODE']='true'timeout_sec=(ENV['RUBY_DEBUG_TIMEOUT_SEC'] || 10).to_iPTY.spawn("#{RUBY}#{boot_options}#{temp_file_path}")do |read,write,pid|
@backlog=[]@last_backlog=[]ask_cmd=['quit','delete','kill']beginTimeout.timeout(timeout_sec)dowhile(line=read.gets)debug_printlinecaseline.chompwhen/INTERNAL_INFO:\s(.*)/p":last_backlog #{@last_backlog}"p":backlog #{@backlog}"@internal_info=JSON.parse(Regexp.last_match(1))cmd=@queue.popifcmd.is_a?(Proc)cmd.callcmd=@queue.popPieces of output in terminal.
Now
$ ruby test/debug/catch_test.rb
Loaded suite test/debug/catch_test
Started
[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb
=> 1| a = 1
2| b = 2
3|
4| 1/0
=>#0 <main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1","line":1}
":last_backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\"]"":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\"]"
catch StandardError
(rdbg) catch StandardError
#0 BP - Catch "StandardError"
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1","line":1}
":last_backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
(rdbg) continue# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb
=>#0 [C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4#1 <main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4
Stop by #0 BP - Catch "StandardError"
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4","line":4}
":last_backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) continue\\r\\n\", \"\\e[?2004l\\r# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=>#0\\t[C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4\\r\\n\", \" #1\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4\\r\\n\", \"\\r\\n\", \"Stop by #0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) continue\\r\\n\", \"\\e[?2004l\\r# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb\\r\\n\", \"=>#0\\t[C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4\\r\\n\", \" #1\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66658-19rnmp.rb:4\\r\\n\", \"\\r\\n\", \"Stop by #0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
(rdbg) q!Expected
$ ruby test/debug/catch_test.rb
Loaded suite test/debug/catch_test
Started
[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb
=> 1| a = 1
2| b = 2
3|
4| 1/0
=>#0 <main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1","line":1}
":last_backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1\\r\\n\"]"
":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1\\r\\n\"]"
catch StandardError
(rdbg) catch StandardError
#0 BP - Catch "StandardError"
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1","line":1}
":last_backlog [\"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
(rdbg) continue
# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb
=>#0 [C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4
#1 <main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4
Stop by #0 BP - Catch "StandardError"
INTERNAL_INFO: {"location":"/var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4","line":4}
":last_backlog [\"\\e[?2004h\\r\\n\", \"(rdbg) continue\\r\\n\", \"\\e[?2004l\\r# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=>#0\\t[C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4\\r\\n\", \" #1\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4\\r\\n\", \"\\r\\n\", \"Stop by #0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
":backlog [\"[1, 4] in /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=> 1| a = 1\\r\\n\", \" 2| b = 2\\r\\n\", \" 3| \\r\\n\", \" 4| 1/0\\r\\n\", \"=>#0\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:1\\r\\n\", \"catch StandardError\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) catch StandardError\\r\\n\", \"\\e[?2004l\\r#0 BP - Catch \\\"StandardError\\\"\\r\\n\", \"\\e[?2004h\\r\\n\", \"(rdbg) continue\\r\\n\", \"\\e[?2004l\\r# No sourcefile available for /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb\\r\\n\", \"=>#0\\t[C] Integer#/ at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4\\r\\n\", \" #1\\t<main> at /var/folders/kv/w1k6nh1x5fl7vx47b2pd005w0000gn/T/debugger20210619-66836-kkigg1.rb:4\\r\\n\", \"\\r\\n\", \"Stop by #0 BP - Catch \\\"StandardError\\\"\\r\\n\"]"
(rdbg) q!
Pieces of codes in utils.rb
Pieces of output in terminal.
Now
Expected