class WebTools::Debugger

Public Instance Methods

method_data_from_frame(frame) click to toggle source
# File lib/web_tools/debugger.rb, line 67
def method_data_from_frame(frame)
  dict = frame.method.defining_class.nesting[1]
  dict = dict ? dict.name : ""
  { "source" => frame.method.source,
    "stepPoints" => frame.method.step_offsets,
    "sends" => frame.method.send_offsets,
    "nowAt" => frame.step_offset,
    "dictionaryName" => dict || "",
    "className" => frame.method.defining_class.name,
    "isMeta" => frame.method.defining_class.singleton_class? }
rescue Exception
  return { "source" => "", "stepPoints" => "", "sends" => "", "nowAt" => 0,
    "dictionaryName" => "", "className" => "", "isMeta" => "" }
end
str_report_for(process_mirror) click to toggle source
# File lib/web_tools/debugger.rb, line 106
def str_report_for(process_mirror)
  process_mirror.stack.collect do |f|
    str = ""
    if f.method
      separator = f.method.defining_class.singleton_class? ? '.' : '#'
      str = "#{f.method.defining_class.name}#{separator}"
    end
    str += (f.name || "block in #{f.selector}")
  end
end
variables_data_from_frame(frame) click to toggle source
# File lib/web_tools/debugger.rb, line 82
def variables_data_from_frame(frame)
  list = [{ "name" => "self",
            "string" => frame.self.name,
            "oop" => frame.self.reflectee.object_id }]
  if frame.self != frame.receiver
    list << { "name" => "receiver",
      "string" => frame.receiver.name,
      "oop" => frame.receiver.reflectee.object_id }
  end
  frame.arguments.each do |k, v|
    list << { "name" => k.to_s,
      "string" => v.name,
      "oop" => v.reflectee.object_id }
  end
  frame.locals.each do |k, v|
    list << { "name" => k.to_s,
      "string" => v.name,
      "oop" => v.reflectee.object_id }
  end
  list
rescue Exception
  return []
end