def wrap_trace_capture(script) " begin #{script} rescue Exception=>e true_backtrace = Marshal.load(Marshal.dump(e.backtrace)) e.define_singleton_method(:correct_backtrace) do e.backtrace.replace(true_backtrace) end raise e end " end begin eval(wrap_trace_capture('foo')) rescue Exception=>e p e p e.backtrace e.correct_backtrace if e.respond_to?(:correct_backtrace) raise e end