| ############################################################################### |
| # 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 |