Esempio n. 1
0
        public void Exception2(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFrame pFrame, uint nOffset, CorDebugExceptionCallbackType exceptionType, uint dwFlags)
        {
            EnterCallback(PausedReason.Exception, "Exception2 (type=" + exceptionType.ToString() + ")", pThread);

            // This callback is also called from Exception(...)!!!! (the .NET 1.1 version)
            // Whatch out for the zeros and null!
            // Exception -> Exception2(pAppDomain, pThread, null, 0, exceptionType, 0);

            process.SelectedThread.CurrentExceptionType = (ExceptionType)exceptionType;

            if (ExceptionType.DEBUG_EXCEPTION_UNHANDLED != (ExceptionType)exceptionType)
            {
                // Handled exception
                if (process.PauseOnHandledException)
                {
                    ExitCallback_Paused();
                }
                else
                {
                    ExitCallback_Continue();
                }
            }
            else
            {
                // Unhandled exception
                ExitCallback_Paused();
            }
        }
Esempio n. 2
0
        public void UnloadModule(ICorDebugAppDomain pAppDomain, ICorDebugModule pModule)
        {
            EnterCallback(PausedReason.Other, "UnloadModule", pAppDomain);

            process.RemoveModule(pModule);

            ExitCallback_Continue();
        }
Esempio n. 3
0
        public unsafe void LoadModule(ICorDebugAppDomain pAppDomain, ICorDebugModule pModule)
        {
            EnterCallback(PausedReason.Other, "LoadModule", pAppDomain);

            process.AddModule(pModule);

            ExitCallback_Continue();
        }
Esempio n. 4
0
        public void LogMessage(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, int lLevel, string pLogSwitchName, string pMessage)
        {
            EnterCallback(PausedReason.Other, "LogMessage", pThread);

            process.OnLogMessage(new MessageEventArgs(process, lLevel, pMessage, pLogSwitchName));

            ExitCallback_Continue();
        }
Esempio n. 5
0
        public void CreateAppDomain(ICorDebugProcess pProcess, ICorDebugAppDomain pAppDomain)
        {
            EnterCallback(PausedReason.Other, "CreateAppDomain", pAppDomain);

            pAppDomain.Attach();

            ExitCallback_Continue();
        }
Esempio n. 6
0
        public void FunctionRemapOpportunity(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFunction pOldFunction, ICorDebugFunction pNewFunction, uint oldILOffset)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.FunctionRemapOpportunity(pAppDomain, pThread, pOldFunction, pNewFunction, oldILOffset);
            }
        }
Esempio n. 7
0
        public void FunctionRemapComplete(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFunction pFunction)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.FunctionRemapComplete(pAppDomain, pThread, pFunction);
            }
        }
Esempio n. 8
0
        public void ExceptionUnwind(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, CorDebugExceptionUnwindCallbackType dwEventType, uint dwFlags)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.ExceptionUnwind(pAppDomain, pThread, dwEventType, dwFlags);
            }
        }
Esempio n. 9
0
        public void BreakpointSetError(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugBreakpoint pBreakpoint, uint dwError)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.BreakpointSetError(pAppDomain, pThread, pBreakpoint, dwError);
            }
        }
Esempio n. 10
0
        public void ExitAppDomain(ICorDebugProcess pProcess, ICorDebugAppDomain pAppDomain)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pProcess);

            if (managedCallback != null)
            {
                managedCallback.ExitAppDomain(pProcess, pAppDomain);
            }
        }
Esempio n. 11
0
        public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.ExitThread(pAppDomain, pThread);
            }
        }
Esempio n. 12
0
        public void LogSwitch(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, int lLevel, uint ulReason, string pLogSwitchName, string pParentName)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.LogSwitch(pAppDomain, pThread, lLevel, ulReason, pLogSwitchName, pParentName);
            }
        }
Esempio n. 13
0
        public void UpdateModuleSymbols(ICorDebugAppDomain pAppDomain, ICorDebugModule pModule, IStream pSymbolStream)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.UpdateModuleSymbols(pAppDomain, pModule, pSymbolStream);
            }
        }
Esempio n. 14
0
        public unsafe void Break(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.Break(pAppDomain, pThread);
            }
        }
Esempio n. 15
0
        public void EvalComplete(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugEval corEval)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.EvalComplete(pAppDomain, pThread, corEval);
            }
        }
Esempio n. 16
0
        public void EditAndContinueRemap(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFunction pFunction, int fAccurate)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.EditAndContinueRemap(pAppDomain, pThread, pFunction, fAccurate);
            }
        }
Esempio n. 17
0
        public void LogMessage(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, int lLevel, string pLogSwitchName, string pMessage)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.LogMessage(pAppDomain, pThread, lLevel, pLogSwitchName, pMessage);
            }
        }
Esempio n. 18
0
        public void StepComplete(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugStepper pStepper, CorDebugStepReason reason)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.StepComplete(pAppDomain, pThread, pStepper, reason);
            }
        }
Esempio n. 19
0
        public void UnloadAssembly(ICorDebugAppDomain pAppDomain, ICorDebugAssembly pAssembly)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.UnloadAssembly(pAppDomain, pAssembly);
            }
        }
Esempio n. 20
0
        public void UnloadClass(ICorDebugAppDomain pAppDomain, ICorDebugClass c)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.UnloadClass(pAppDomain, c);
            }
        }
Esempio n. 21
0
        public unsafe void Exception(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, int unhandled)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.Exception(pAppDomain, pThread, unhandled);
            }
        }
Esempio n. 22
0
        public void UnloadModule(ICorDebugAppDomain pAppDomain, ICorDebugModule pModule)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.UnloadModule(pAppDomain, pModule);
            }
        }
Esempio n. 23
0
        public void Exception2(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFrame pFrame, uint nOffset, CorDebugExceptionCallbackType exceptionType, uint dwFlags)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.Exception2(pAppDomain, pThread, pFrame, nOffset, exceptionType, dwFlags);
            }
        }
Esempio n. 24
0
        // Do not pass the pBreakpoint parameter as ICorDebugBreakpoint - marshaling of it fails in .NET 1.1
        public void Breakpoint(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, IntPtr pBreakpoint)
        {
            ManagedCallback managedCallback = GetProcessCallbackInterface(pAppDomain);

            if (managedCallback != null)
            {
                managedCallback.Breakpoint(pAppDomain, pThread, pBreakpoint);
            }
        }
Esempio n. 25
0
        public void CreateThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
        {
            // We can not use pThread since it has not been added yet
            // and we continue from this callback anyway
            EnterCallback(PausedReason.Other, "CreateThread " + pThread.ID, pAppDomain);

            process.AddThread(pThread);

            ExitCallback_Continue();
        }
Esempio n. 26
0
//		public void Exception2(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugFrame pFrame, uint nOffset, CorDebugExceptionCallbackType exceptionType, uint dwFlags)
//		{
//			EnterCallback(PausedReason.Exception, "Exception2 (type=" + exceptionType.ToString() + ")", pThread);
//
//			// This callback is also called from Exception(...)!!!! (the .NET 1.1 version)
//			// Watch out for the zeros and null!
//			// Exception -> Exception2(pAppDomain, pThread, null, 0, exceptionType, 0);
//
//			process.SelectedThread.CurrentException = new Exception(new Value(process, new Expressions.CurrentExceptionExpression(), process.SelectedThread.CorThread.CurrentException));
//			process.SelectedThread.CurrentException_DebuggeeState = process.DebuggeeState;
//			process.SelectedThread.CurrentExceptionType = (ExceptionType)exceptionType;
//			process.SelectedThread.CurrentExceptionIsUnhandled = (ExceptionType)exceptionType == ExceptionType.Unhandled;
//
//			if (process.SelectedThread.CurrentExceptionIsUnhandled ||
//			    process.PauseOnHandledException)
//			{
//				pauseOnNextExit = true;
//			}
//			ExitCallback();
//		}

        public void ExceptionUnwind(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, CorDebugExceptionUnwindCallbackType dwEventType, uint dwFlags)
        {
            EnterCallback(PausedReason.ExceptionIntercepted, "ExceptionUnwind", pThread);

            if (dwEventType == CorDebugExceptionUnwindCallbackType.DEBUG_EXCEPTION_INTERCEPTED)
            {
                ExitCallback_Paused();
            }
            else
            {
                ExitCallback_Continue();
            }
        }
Esempio n. 27
0
        // Do not pass the pBreakpoint parameter as ICorDebugBreakpoint - marshaling of it fails in .NET 1.1
        public void Breakpoint(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, IntPtr pBreakpoint)
        {
            EnterCallback(PausedReason.Breakpoint, "Breakpoint", pThread);
            this.process.NotifyPaused(new PauseSession(PausedReason.Breakpoint));
            ExitCallback_Paused();

//			foreach (Breakpoint b in debugger.Breakpoints) {
//				if (b.Equals(pBreakpoint)) {
//					// TODO: Check that this works
//					b.OnHit();
//				}
//			}
        }
Esempio n. 28
0
        public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
        {
            // It seems that ICorDebugThread is still not dead and can be used
            EnterCallback(PausedReason.Other, "ExitThread " + pThread.ID, pThread);

            process.GetThread(pThread).NotifyNativeThreadExited();

            try {
                ExitCallback_Continue();
            } catch (COMException e) {
                // For some reason this sometimes happens in .NET 1.1
                process.TraceMessage("Continue failed in ExitThread callback: " + e.Message);
            }
        }
Esempio n. 29
0
        public void NameChange(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
        {
            ManagedCallback managedCallback = null;

            if (pAppDomain != null)
            {
                managedCallback = GetProcessCallbackInterface(pAppDomain);
            }
            if (pThread != null)
            {
                managedCallback = GetProcessCallbackInterface(pThread.Process);
            }
            if (managedCallback != null)
            {
                managedCallback.NameChange(pAppDomain, pThread);
            }
        }
Esempio n. 30
0
        void HandleEvalComplete(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, ICorDebugEval corEval, bool exception)
        {
            // Let the eval know that the CorEval has finished
            Eval eval = process.GetEval(corEval);

            eval.NotifyEvaluationComplete(!exception);
            process.NotifyEvaluationComplete(eval);

            if (process.SetupNextEvaluation())
            {
                ExitCallback_Continue();
            }
            else
            {
                ExitCallback_Paused();
            }
        }