void ICorDebugManagedCallback2.MDANotification(
     ICorDebugController pController,
     ICorDebugThread thread,
     ICorDebugMDA pMDA)
 {
     if (DebugOutput)
     {
         Console.WriteLine("info: MDANotification2");
     }
     pController.Continue(0);
 }
Пример #2
0
        // This method must be called just before returning to the caller. No fields can be accessed
        // and no methods can be called because the CLR debugger could call us before this method
        // returns.
        bool Continue(ICorDebugController controller, bool callOnProcessStateChanged)
        {
            Debug.Assert(controller != null);
            if (controller == null)
                return false;

            if (callOnProcessStateChanged && managedCallbackCounter == 1) {
                try {
                    continuing = true;
                    CallOnProcessStateChanged();
                }
                finally {
                    continuing = false;
                }
            }
            managedCallbackCounter--;
            continueCounter++;

            if (callOnProcessStateChanged && managedCallbackCounter == 0)
                CallOnProcessStateChanged();

            // As soon as we call Continue(), the CLR debugger could send us another message so it's
            // important that we don't access any of our fields and don't call any methods after
            // Continue() has been called!
            int hr = controller.Continue(0);
            bool success = hr >= 0 || hr == CordbgErrors.CORDBG_E_PROCESS_TERMINATED || hr == CordbgErrors.CORDBG_E_OBJECT_NEUTERED;
            Debug.WriteLineIf(!success, string.Format("dndbg: ICorDebugController::Continue() failed: 0x{0:X8}", hr));
            return success;
        }
 protected virtual void DefaultHandler(ICorDebugController controller)
 {
     controller.Continue(false);
 }
Пример #4
0
 // Continue processes after a call to Stop.
 //
 // outOfBand is true if continuing from an unmanaged event that
 // was sent with the outOfBand flag in the unmanaged callback;
 // false if continueing from a managed event or normal unmanaged event.
 public void Continue(bool outOfBand)
 {
     m_controller.Continue(outOfBand ? 1 : 0);
 }
Пример #5
0
 public void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA)
 {
     pController.Continue(0);
 }
Пример #6
0
 public virtual void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA)
 {
     pController.Continue(0);
 }
Пример #7
0
		bool Continue(ICorDebugController controller) {
			Debug.Assert(controller != null);
			if (controller == null)
				return false;

			int hr = controller.Continue(0);
			continueCounter++;
			bool success = hr >= 0 || hr == CordbgErrors.CORDBG_E_PROCESS_TERMINATED || hr == CordbgErrors.CORDBG_E_OBJECT_NEUTERED;
			Debug.WriteLineIf(!success, string.Format("dndbg: ICorDebugController::Continue() failed: 0x{0:X8}", hr));
			return success;
		}
 public void CreateProcess(ICorDebugProcess pProcess)
 {
     controller = pProcess;
     controller.Continue(0);
 }
 int ICorDebugAppDomain.Continue(int fIsOutOfBand)
 {
     return(ICorDebugController.Continue(fIsOutOfBand));
 }
Пример #10
0
 public void HandleEvent(ICorDebugController controller)
 {
     Console.WriteLine("event received");
     controller.Continue(0);
 }
Пример #11
0
 public void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA)
 {
     Console.WriteLine("MDANotification");
     pController.Continue(0);
 }