blob: dbbff1c6b68acc97c52d32949a8bae754df48405 [file] [log] [blame]
###############################################################################
# Copyright (c) 2005, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
###############################################################################
require 'dbgp/logging'
require 'dbgp/ruby_debugger'
module XoredDebugger
class Runner
def Runner.go
log = ENV['DBGP_RUBY_LOG']
logger = log.nil? ? NullLogger.new : (log == 'stdout' ? StdoutLogger.new : FileLogger.new(log))
host = ENV['DBGP_RUBY_HOST']
port = ENV['DBGP_RUBY_PORT'].to_i
key = ENV['DBGP_RUBY_KEY']
script = ENV['DBGP_RUBY_SCRIPT']
test = ENV['DBGP_RUBY_TEST']
test = test.nil? ? false : test == '1' ? true : false
begin
if (host.nil? or port == 0 or key.nil? or script.nil?)
logger.puts('Invalid debugger params')
else
logger.puts('Debugging session on ' + Time.new.to_s)
logger.puts('Host: ' + host.to_s)
logger.puts('Port: ' + port.to_s)
logger.puts('Key: ' + key.to_s)
logger.puts('Script: ' + script.to_s)
logger.puts('Test: ' + test.to_s)
# Debugger setup
debugger = RubyDebugger.new(host, port, key, logger, test)
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
debugger.trace(event, file, line, id, binding, klass)
}
# Script for debug
load script
# Debugger teardown
set_trace_func nil
debugger.terminate
end
rescue Exception
logger.puts('Exception during debugging:')
logger.puts("\tMessage: " + $!.message)
logger.puts("\tBacktrace: " + $!.backtrace.join("\n"))
ensure
logger.close
end
end # go
end # class Runner
Runner.go
end # XoredDebugger