close
Skip to content

@last_backlog should not be same as @backlog #108

@ono-max

Description

@ono-max

Pieces of codes in utils.rb

DEBUG_MODE = true

    def debug_print msg
      print msg if DEBUG_MODE
    end

    RUBY = RbConfig.ruby
    REPL_RPOMPT = '(rdbg)'

    def create_pseudo_terminal(boot_options: "-r debug/run")
      inject_lib_to_load_path
      ENV['RUBY_DEBUG_USE_COLORIZE'] = "false"
      ENV['RUBY_DEBUG_TEST_MODE'] = 'true'

      timeout_sec = (ENV['RUBY_DEBUG_TIMEOUT_SEC'] || 10).to_i

      PTY.spawn("#{RUBY} #{boot_options} #{temp_file_path}") do |read, write, pid|
        @backlog = []
        @last_backlog = []
        ask_cmd = ['quit', 'delete', 'kill']
        begin
          Timeout.timeout(timeout_sec) do
            while (line = read.gets)
              debug_print line
              case line.chomp
              when /INTERNAL_INFO:\s(.*)/
                p ":last_backlog #{@last_backlog}"
                p ":backlog #{@backlog}"
                @internal_info = JSON.parse(Regexp.last_match(1))
                cmd = @queue.pop
                if cmd.is_a?(Proc)
                  cmd.call
                  cmd = @queue.pop

Pieces 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions