void ICorDebugManagedCallback2.MDANotification( ICorDebugController pController, ICorDebugThread thread, ICorDebugMDA pMDA) { if (DebugOutput) { Console.WriteLine("info: MDANotification2"); } pController.Continue(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); }
// 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); }
public void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA) { pController.Continue(0); }
public virtual void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA) { pController.Continue(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)); }
public void HandleEvent(ICorDebugController controller) { Console.WriteLine("event received"); controller.Continue(0); }
public void MDANotification(ICorDebugController pController, ICorDebugThread pThread, ICorDebugMDA pMDA) { Console.WriteLine("MDANotification"); pController.Continue(0); }