Implements debugger “jump” command
# File lib/ruby-debug/commands/jump.rb, line 55 def help(cmd) %Q{ j[ump] line\tjump to line number (absolute) j[ump] -line\tjump back to line (relative) j[ump] +line\tjump ahead to line (relative) Change the next line of code to be executed. } end
# File lib/ruby-debug/commands/jump.rb, line 51 def help_command %w[jump] end
# File lib/ruby-debug/commands/jump.rb, line 20 def execute if !@match[1] errmsg "\"jump\" must be followed by a line number\n" return end if !numeric?(@match[1]) puts "Bad line number: " + @match[1] return end line = @match[1].to_i line = @state.context.frame_line(0) + line if @match[1][0] == '+' or @match[1][0] == '-' if line == @state.context.frame_line(0) CommandProcessor.print_location_and_text(@state.context.frame_file(0), line) return end file = @match[2] file = @state.context.frame_file(file.to_i) if numeric?(file) file = @state.context.frame_file(0) if !file case Debugger.current_context.jump(line, file) when 0 @state.proceed when 1 errmsg "Not possible to jump from here\n" when 2 errmsg "Couldn't find debugged frame\n" when 3 errmsg "Couldn't find active code at " + file + ":" + line.to_s + "\n" end end
# File lib/ruby-debug/commands/jump.rb, line 7 def numeric?(object) true if Float(object) rescue false end
# File lib/ruby-debug/commands/jump.rb, line 11 def regexp %r ^\s* j(?:ump)? \s* (?:\s+(\S+))?\s* (?:\s+(\S+))?\s* $ /x end