blob: 3b205f0fada4f0e251ec26cbdf6aa8d3e2f5d994 [file] [log] [blame]
require 'common/Logger'
require 'dbgp/Command'
require 'dbgp/CaptureManager'
require 'dbgp/SourceManager'
require 'debugger/FeatureManager'
require 'debugger/DebugEventHandler'
module XoredDebugger
class AbstractDebugger
include Logger
attr_reader :feature_manager
attr_reader :breakpoint_manager
def initialize()
@feature_manager = FeatureManager.new
@breakpoint_manager = create_breakpoint_manager()
end
def terminate
Thread.list.each do |thread|
thread[ :debugger_context ] = nil
end
end
def handler
@handler
end
def handler=(value)
if (value.nil? || (value.is_a? DebugEventHandler))
@handler = value
else
raise ArgumentError, 'Hanlder MUST inherit DebugEventHandler'
end
end
def current_context
thread_context(Thread.current)
end
def thread_context(thread)
context = thread[ :debugger_context ]
if (context.nil?)
context = create_context_impl(thread)
thread[ :debugger_context ] = context
end
return context
end
# methods to override
def get_debugger_id
raise NotImplementedError, 'This method MUST be implemented in ancessors'
end
def create_breakpoint_manager()
raise NotImplementedError, 'This method MUST be implemented in ancessors'
end
def create_context_impl(thread)
raise NotImplementedError, 'This method MUST be implemented in ancessors'
end
def create_debug_thread(*args, &block)
raise NotImplementedError, 'This method MUST be implemented in ancessors'
end
def is_debug_thread?(thread)
raise NotImplementedError, 'This method MUST be implemented in ancessors'
end
end
end