예제 #1
0
 public NativeCodeBreakpointConditionContext(DnDebugger debugger, DnNativeCodeBreakpoint bp, BreakpointDebugCallbackEventArgs e)
     : base(debugger)
 {
     NativeCodeBreakpoint = bp;
     E = e;
 }
예제 #2
0
		public NativeCodeBreakpointPauseState(DnNativeCodeBreakpoint bp)
			: base(DebuggerPauseReason.NativeCodeBreakpoint) {
			this.bp = bp;
		}
예제 #3
0
		public NativeCodeBreakpointConditionContext(DnDebugger debugger, DnNativeCodeBreakpoint bp)
			: base(debugger) {
			NativeCodeBreakpoint = bp;
		}
예제 #4
0
		/// <summary>
		/// Creates a native instruction breakpoint
		/// </summary>
		/// <param name="code">Native code</param>
		/// <param name="offset">Offset</param>
		/// <param name="cond">Condition</param>
		/// <returns></returns>
		public DnNativeCodeBreakpoint CreateNativeBreakpoint(CorCode code, uint offset, Func<NativeCodeBreakpointConditionContext, bool> cond) {
			DebugVerifyThread();
			var bp = new DnNativeCodeBreakpoint(code, offset, cond);
			var module = code.Function?.Module?.DnModuleId ?? new DnModuleId();
			nativeCodeBreakpointList.Add(module, bp);
			foreach (var dnMod in GetLoadedDnModules(module))
				bp.AddBreakpoint(dnMod);
			return bp;
		}
예제 #5
0
		/// <summary>
		/// Creates a native instruction breakpoint
		/// </summary>
		/// <param name="module">Module</param>
		/// <param name="token">Method token</param>
		/// <param name="offset">Offset</param>
		/// <param name="cond">Condition</param>
		/// <returns></returns>
		public DnNativeCodeBreakpoint CreateNativeBreakpoint(DnModuleId module, uint token, uint offset, Func<NativeCodeBreakpointConditionContext, bool> cond) {
			DebugVerifyThread();
			var bp = new DnNativeCodeBreakpoint(module, token, offset, cond);
			nativeCodeBreakpointList.Add(module, bp);
			foreach (var dnMod in GetLoadedDnModules(module))
				bp.AddBreakpoint(dnMod);
			return bp;
		}
예제 #6
0
 public NativeCodeBreakpointPauseState(DnNativeCodeBreakpoint bp)
     : base(DebuggerPauseReason.NativeCodeBreakpoint)
 {
     this.bp = bp;
 }
예제 #7
0
		public void Initialize(DnDebugger dbg) {
			Debug.Assert(debugger.Dispatcher.CheckAccess());
			Debug.Assert(dbgBreakpoint == null);
			if (dbgBreakpoint != null)
				throw new InvalidOperationException();
			if (code == null)
				dbgBreakpoint = dbg.CreateNativeBreakpoint(module.ToSerializedDnModule(), token, offset, a => cond(this));
			else
				dbgBreakpoint = dbg.CreateNativeBreakpoint(code.CorCode, offset, a => cond(this));
			dbgBreakpoint.IsEnabled = isEnabled;
			dbgBreakpoint.Tag = this;
		}
예제 #8
0
 public NativeCodeBreakpointConditionContext(DnDebugger debugger, DnNativeCodeBreakpoint bp)
     : base(debugger)
 {
     NativeCodeBreakpoint = bp;
 }