Permalink
Fetching contributors…
Cannot retrieve contributors at this time
67 lines (52 sloc) 1.65 KB
require("rubinius/debugger")
class Rubinius Debugger {
forwards_unary_ruby_methods
metaclass forwards_unary_ruby_methods
}
class Rubinius Debugger Command SetBreakPoint {
def match_method: method_identifier {
match method_identifier {
case /##/ ->
class_name, method_name = method_identifier split: "##"
method_identifier = "#{class_name}::#{method_name message_name}"
case /#/ ->
class_name, method_name = method_identifier split: "#"
method_identifier = "#{class_name}##{method_name message_name}"
}
/([A-Z]\w*(?:::[A-Z]\w*)*)([.#]|::)([a-zA-Z0-9_\[\]:]+[!?=]?)(?:[:](\d+))?/ match: method_identifier
}
alias_method('match_method, 'match_method:)
}
class Rubinius Location {
forwards_unary_ruby_methods
}
class Rubinius Debugger Frame {
forwards_unary_ruby_methods
def describe {
arg_str = ""
recv = nil
loc = @location
if: (loc is_block) then: {
if: (method required_args == 0) then: {
recv = "{ } in #{loc describe_receiver}#{loc name}"
} else: {
block_args = method local_names join: ", "
recv = "|#{block_args}| { } in #{loc describe_receiver}#{loc name}"
}
} else: {
recv = loc describe
}
recv = recv replace: "#:" with: "#"
recv = recv replace: ".:" with: "##"
recv = recv replace: "." with: "##"
str = "#{recv} at #{loc method active_path}:#{loc line} (#{loc ip})"
{ str << " (+#{loc ip})" } if: $ @debugger variables['show_ip]
str
}
alias_method('describe, ':describe)
def run: code {
Fancy eval: (code to_s) binding: binding
}
alias_method('run, 'run:)
}
Rubinius Debugger start