Beispiel #1
1
		public LogSwitchEventContext(Debugger debugger, DBG.LogSwitchDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #2
1
		public NameChangeEventContext(Debugger debugger, DBG.NameChangeDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #3
0
		void Keep(DBG.CorValue v) {
			debugger.Dispatcher.VerifyAccess();
			if (v == null)
				return;
			if (valuesToKeep == null)
				valuesToKeep = new List<DBG.CorValue>();
			valuesToKeep.Add(v);
		}
Beispiel #4
0
		public Eval(Debugger debugger, IAppDomain appDomain, DBG.DnEval eval) {
			if (appDomain == null)
				throw new InvalidOperationException("The thread has no owner AppDomain and can't be used to evaluate funcs");
			this.debugger = debugger;
			this.appDomain = appDomain;
			this.eval = eval;
			this.eval.SetNoTotalTimeout();
		}
Beispiel #5
0
		public static DebuggerProcessState Convert(DBG.DebuggerProcessState state) {
			switch (state) {
			case DBG.DebuggerProcessState.Starting:		return DebuggerProcessState.Starting;
			case DBG.DebuggerProcessState.Continuing:	return DebuggerProcessState.Continuing;
			case DBG.DebuggerProcessState.Running:		return DebuggerProcessState.Running;
			case DBG.DebuggerProcessState.Paused:		return DebuggerProcessState.Paused;
			case DBG.DebuggerProcessState.Terminated:	return DebuggerProcessState.Terminated;
			default: Debug.Fail("Invalid state");		return (DebuggerProcessState)(-1);
			}
		}
Beispiel #6
0
		public static DBG.DebugProcessOptions Convert(DebugOptions options, IDebuggerSettings settings, DBG.CLRTypeDebugInfo info) {
			if (options == null)
				throw new ArgumentNullException();
			var o = new DBG.DebugProcessOptions(info);
			o.Filename = options.Filename;
			o.CommandLine = options.CommandLine;
			o.CurrentDirectory = options.CurrentDirectory;
			o.DebugMessageDispatcher = WpfDebugMessageDispatcher.Instance;
			o.BreakProcessKind = Convert(options.BreakProcessKind);
			o.DebugOptions.IgnoreBreakInstructions = settings.IgnoreBreakInstructions;
			return o;
		}
Beispiel #7
0
		public MDANotificationEventContext(Debugger debugger, DBG.MDANotificationDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
			this.mda = e.CorMDA;
		}
Beispiel #8
0
		public CustomNotificationEventContext(Debugger debugger, DBG.CustomNotificationDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #9
0
		void TheDebugger_OnProcessStateChanged_Last(object sender, DBG.DebuggerEventArgs e) {
			switch (theDebugger.ProcessState) {
			case DBG.DebuggerProcessState.Starting:
				foreach (var bp in breakpointsToInitialize)
					Initialize(bp);
				breakpointsToInitialize.Clear();
				InitializeProcessHandle();
				Debug.Assert(hProcess_debuggee != IntPtr.Zero);
				break;

			case DBG.DebuggerProcessState.Terminated:
				Debug.Assert(breakpointsToInitialize.Count == 0);
				breakpointsToInitialize.Clear();
				hProcess_debuggee = IntPtr.Zero;
				break;
			}

			Debug.Assert((theDebugger.ProcessState == DBG.DebuggerProcessState.Terminated && hProcess_debuggee == IntPtr.Zero) ||
						 (theDebugger.ProcessState != DBG.DebuggerProcessState.Terminated && hProcess_debuggee != IntPtr.Zero && hProcess_debuggee == GetProcessHandle()));

			var c = OnProcessStateChanged;
			if (c != null) {
				try {
					c(this, DebuggerEventArgs.Empty);
				}
				catch {
					// Ignore buggy script exceptions
				}
			}
			InitializePausedOrTerminatedEvent();
		}
Beispiel #10
0
		public UpdateModuleSymbolsEventContext(Debugger debugger, DBG.UpdateModuleSymbolsDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #11
0
		internal IDebuggerAssembly FindAssemblyUI(DBG.CorAssembly corAssembly) {
			dispatcher.VerifyAccess();
			var dbg = theDebugger.Debugger;
			if (dbg == null)
				return null;
			foreach (var a in dbg.Assemblies) {
				if (a.CorAssembly == corAssembly)
					return new DebuggerAssembly(this, a);
			}
			return null;
		}
Beispiel #12
0
		public ControlCTrapEventContext(Debugger debugger, DBG.ControlCTrapDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
		}
Beispiel #13
0
		public AppDomainEventContext(Debugger debugger, DBG.AppDomainDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #14
0
		public AssemblyEventContext(Debugger debugger, DBG.AssemblyDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #15
0
		public ModuleEventContext(Debugger debugger, DBG.ModuleDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #16
0
		IDebuggerValue Create(DBG.CorValue v) {
			if (v == null)
				throw new InvalidOperationException("Could not create a new value");
			return new DebuggerValue(debugger, v);
		}
Beispiel #17
0
		public ProcessEventContext(Debugger debugger, DBG.ProcessDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
		}
Beispiel #18
0
		internal IDebuggerModule FindModuleUI(DBG.CorModule corModule) {
			dispatcher.VerifyAccess();
			var dbg = theDebugger.Debugger;
			if (dbg == null)
				return null;
			foreach (var m in dbg.Modules) {
				if (m.CorModule == corModule)
					return new DebuggerModule(this, m);
			}
			return null;
		}
Beispiel #19
0
		public static DebuggerPauseState Convert(DBG.DebuggerPauseState ps) {
			switch (ps.Reason) {
			case DBG.DebuggerPauseReason.Other:
				return new DebuggerPauseState(PauseReason.Other);

			case DBG.DebuggerPauseReason.UnhandledException:
				return new DebuggerPauseState(PauseReason.UnhandledException);

			case DBG.DebuggerPauseReason.Exception:
				return new DebuggerPauseState(PauseReason.Exception);

			case DBG.DebuggerPauseReason.DebugEventBreakpoint:
				var deb = (DBG.DebugEventBreakpointPauseState)ps;
				return new EventBreakpointPauseState(deb.Breakpoint.Tag as IEventBreakpoint ?? NullEventBreakpoint.Instance);

			case DBG.DebuggerPauseReason.AnyDebugEventBreakpoint:
				var adeb = (DBG.AnyDebugEventBreakpointPauseState)ps;
				return new AnyEventBreakpointPauseState(adeb.Breakpoint.Tag as IAnyEventBreakpoint ?? NullAnyEventBreakpoint.Instance);

			case DBG.DebuggerPauseReason.Break:
				return new DebuggerPauseState(PauseReason.Break);

			case DBG.DebuggerPauseReason.ILCodeBreakpoint:
				var ilbp = (DBG.ILCodeBreakpointPauseState)ps;
				return new ILBreakpointPauseState(ilbp.Breakpoint.Tag as IILBreakpoint ?? NullILBreakpoint.Instance);

			case DBG.DebuggerPauseReason.NativeCodeBreakpoint:
				var nbp = (DBG.NativeCodeBreakpointPauseState)ps;
				return new NativeBreakpointPauseState(nbp.Breakpoint.Tag as INativeBreakpoint ?? NullNativeBreakpoint.Instance);

			case DBG.DebuggerPauseReason.Step:
				return new StepPauseState((DebugStepReason)((DBG.StepPauseState)ps).StepReason);

			case DBG.DebuggerPauseReason.UserBreak:
				return new DebuggerPauseState(PauseReason.UserBreak);

			case DBG.DebuggerPauseReason.Eval:
				return new DebuggerPauseState(PauseReason.Eval);

			default:
				return new DebuggerPauseState(PauseReason.Other);
			}
		}
Beispiel #20
0
		internal IAppDomain FindAppDomainUI(DBG.CorAppDomain appDomain) {
			dispatcher.VerifyAccess();
			var dbg = theDebugger.Debugger;
			if (dbg == null)
				return null;
			foreach (var p in dbg.Processes) {
				foreach (var ad in p.AppDomains) {
					if (ad.CorAppDomain == appDomain)
						return new DebuggerAppDomain(this, ad);
				}
			}
			return null;
		}
Beispiel #21
0
		internal IDebuggerThread FindThreadUI(DBG.CorThread thread) {
			dispatcher.VerifyAccess();
			var dbg = theDebugger.Debugger;
			if (dbg == null)
				return null;
			foreach (var p in dbg.Processes) {
				foreach (var t in p.Threads) {
					if (t.CorThread == thread)
						return new DebuggerThread(this, t);
				}
			}
			return null;
		}
Beispiel #22
0
		public ThreadEventContext(Debugger debugger, DBG.ThreadDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #23
0
		public DebuggerThread(Debugger debugger, DBG.DnThread thread) {
			debugger.Dispatcher.VerifyAccess();
			this.debugger = debugger;
			this.thread = thread;
			this.uniqueId = thread.UniqueId;
			this.hashCode = thread.GetHashCode();
		}
Beispiel #24
0
		public ClassEventContext(Debugger debugger, DBG.ClassDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			this.args = e;
		}
Beispiel #25
0
		public LogMessageEventContext(Debugger debugger, DBG.LogMessageDebugCallbackEventArgs e)
			: base(debugger, e.Kind.ToDebugEventKind()) {
			args = e;
		}