internal void DispatchThreadExitedEvent(GenericDebuggerEventArgs<RuntimeThread> e)
 {
     _threads.Remove(e.TargetObject.ComThread);
     OnThreadExited(e);
 }
 public void ExitProcess(ICorDebugProcess pProcess)
 {
     var process = Session.GetProcess(pProcess);
     Log("Exited process.");
     var eventArgs = new GenericDebuggerEventArgs<DebuggeeProcess>(process, process);
     Session.DispatchExitProcessEvent(eventArgs);
     //FinalizeEvent(eventArgs);
 }
 internal void DispatchThreadCreatedEvent(GenericDebuggerEventArgs<RuntimeThread> e)
 {
     _threads.Add(e.TargetObject.ComThread, e.TargetObject);
     OnThreadCreated(e);
 }
 protected virtual void OnProcessExited(GenericDebuggerEventArgs<DebuggeeProcess> e)
 {
     if (ProcessExited != null)
         ProcessExited(this, e);
 }
 internal void DispatchModuleUnloadEvent(GenericDebuggerEventArgs<RuntimeModule> e)
 {
     _modules.Remove(e.TargetObject.ComModule);
     OnModuleUnload(e);
 }
Exemple #6
0
 internal void DispatchCreateProcessEvent(GenericDebuggerEventArgs <DebuggeeProcess> e)
 {
     IsActive = true;
     _debuggerProcesses.Add(e.TargetObject.ComProcess, e.TargetObject);
     OnProcessCreated(e);
 }
 protected virtual void OnProcessCreated(GenericDebuggerEventArgs<DebuggeeProcess> e)
 {
     e.TargetObject.Paused += TargetObject_Paused;
     e.TargetObject.Resumed += TargetObject_Resumed;
     if (ProcessCreated != null)
         ProcessCreated(this, e);
 }
        public void LoadAssembly(ICorDebugAppDomain pAppDomain, ICorDebugAssembly pAssembly)
        {

            var domain = GetProcessWrapper(pAppDomain).GetAppDomain(pAppDomain);
            var assembly = new RuntimeAssembly(domain, pAssembly);
            Log("Loaded assembly {0}.", assembly.Name);
            var eventArgs = new GenericDebuggerEventArgs<RuntimeAssembly>(assembly, domain);
            domain.DispatchAssemblyLoadEvent(eventArgs);

            FinalizeEvent(eventArgs);
        }
        public void UnloadAssembly(ICorDebugAppDomain pAppDomain, ICorDebugAssembly pAssembly)
        {
            Log("Unload assembly.");

            var domain = GetProcessWrapper(pAppDomain).GetAppDomain(pAppDomain);
            var eventArgs = new GenericDebuggerEventArgs<RuntimeAssembly>(domain.GetAssembly(pAssembly), domain);
            domain.DispatchAssemblyUnloadEvent(eventArgs);

            FinalizeEvent(eventArgs);
        }
        public void CreateAppDomain(ICorDebugProcess pProcess, ICorDebugAppDomain pAppDomain)
        {
            pAppDomain.Attach();
            var process = GetProcessWrapper(pProcess);
            var domain = new RuntimeAppDomain(process, pAppDomain);
            Log("Created application domain {0}.", domain.Name);
            var eventArgs = new GenericDebuggerEventArgs<RuntimeAppDomain>(domain, process);
            process.DispatchAppDomainLoad(eventArgs);

            FinalizeEvent(eventArgs);
        }
        public void ExitAppDomain(ICorDebugProcess pProcess, ICorDebugAppDomain pAppDomain)
        {
            Log("Exited application domain.");

            pAppDomain.Detach();
            var process = GetProcessWrapper(pProcess);
            var eventArgs = new GenericDebuggerEventArgs<RuntimeAppDomain>(process.GetAppDomain(pAppDomain), process);
            process.DispatchAppDomainUnload(eventArgs);

            FinalizeEvent(eventArgs);
        }
        public void UnloadModule(ICorDebugAppDomain pAppDomain, ICorDebugModule pModule)
        {
            RuntimeAppDomain runtimeDomain = GetProcessWrapper(pAppDomain).GetAppDomain(pAppDomain);

            ICorDebugAssembly comAssembly;
            pModule.GetAssembly(out comAssembly);
            RuntimeAssembly runtimeAssembly = runtimeDomain.GetAssembly(comAssembly);

            var runtimeModule = runtimeAssembly.GetModule(pModule);
            Log("Unloaded module.");

            var eventArgs = new GenericDebuggerEventArgs<RuntimeModule>(runtimeModule, runtimeDomain);

            runtimeAssembly.DispatchModuleUnloadEvent(eventArgs);
            FinalizeEvent(eventArgs);
        }
 public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread thread)
 {
     var domain = GetProcessWrapper(pAppDomain).GetAppDomain(pAppDomain);
     var debuggerThread = domain.GetThread(thread);
     Log("Exited thread.");
     var eventArgs = new GenericDebuggerEventArgs<RuntimeThread>(debuggerThread, domain);
     domain.DispatchThreadExitedEvent(eventArgs);
     FinalizeEvent(eventArgs);
 }
 public void CreateThread(ICorDebugAppDomain pAppDomain, ICorDebugThread thread)
 {
     var domain = GetProcessWrapper(pAppDomain).GetAppDomain(pAppDomain);
     var debuggerThread = new RuntimeThread(domain, thread);
     Log("Created thread in domain '{0}'. Id={1}, Handle={2}.", domain.Name, debuggerThread.Id, debuggerThread.Handle);
     var eventArgs = new GenericDebuggerEventArgs<RuntimeThread>(debuggerThread, domain);
     domain.DispatchThreadCreatedEvent(eventArgs);
     FinalizeEvent(eventArgs);
 }
 protected virtual void OnAssemblyUnload(GenericDebuggerEventArgs<RuntimeAssembly> e)
 {
     if (AssemblyUnload != null)
         AssemblyUnload(this, e);
 }
 internal void DispatchAppDomainUnload(GenericDebuggerEventArgs<RuntimeAppDomain> e)
 {
     _domains.Remove(e.TargetObject.ComAppDomain);
     e.TargetObject.Paused -= TargetObject_Paused;
     e.TargetObject.BreakpointHit -= TargetObject_BreakpointHit;
     e.TargetObject.ThreadCreated -= TargetObject_ThreadCreated;
     e.TargetObject.ThreadExited -= TargetObject_ThreadExited;
     OnAppDomainUnload(e);
 }
 protected virtual void OnThreadExited(GenericDebuggerEventArgs<RuntimeThread> e)
 {
     if (ThreadExited != null)
         ThreadExited(this, e);
 }
 private void TargetObject_ThreadCreated(object sender, GenericDebuggerEventArgs<RuntimeThread> e)
 {
     OnThreadCreated(e);
 }
 internal void DispatchCreateProcessEvent(GenericDebuggerEventArgs<DebuggeeProcess> e)
 {
     IsActive = true;
     _debuggerProcesses.Add(e.TargetObject.ComProcess, e.TargetObject);
     OnProcessCreated(e);
 }
 protected virtual void OnAppDomainUnload(GenericDebuggerEventArgs<RuntimeAppDomain> e)
 {
     if (AppDomainUnload != null)
         AppDomainUnload(this, e);
 }
 internal void DispatchExitProcessEvent(GenericDebuggerEventArgs<DebuggeeProcess> e)
 {
     e.TargetObject.Paused -= TargetObject_Paused;
     _debuggerProcesses.Remove(e.TargetObject.ComProcess);
     OnProcessExited(e);
     if (_debuggerProcesses.Count == 0)
         IsActive = false;
 }
 internal void DispatchAssemblyLoadEvent(GenericDebuggerEventArgs<RuntimeAssembly> e)
 {
     _assemblies.Add(e.TargetObject.ComAssembly, e.TargetObject);
     OnAssemblyLoad(e);
 }
 internal void DispatchModuleLoadEvent(GenericDebuggerEventArgs<RuntimeModule> e)
 {
     _modules.Add(e.TargetObject.ComModule, e.TargetObject);
     OnModuleLoad(e);
 }
 internal void DispatchAssemblyUnloadEvent(GenericDebuggerEventArgs<RuntimeAssembly> e)
 {
     _assemblies.Remove(e.TargetObject.ComAssembly);
     OnAssemblyUnload(e);
 }
 protected virtual void OnModuleUnload(GenericDebuggerEventArgs<RuntimeModule> e)
 {
     if (ModuleUnload != null)
         ModuleUnload(this, e);
 }
 public void CreateProcess(ICorDebugProcess pProcess)
 {
     var process = new DebuggeeProcess(Session, pProcess);
     Log("Created process.");
     var eventArgs = new GenericDebuggerEventArgs<DebuggeeProcess>(process, process);
     Session.DispatchCreateProcessEvent(eventArgs);
     FinalizeEvent(eventArgs);
 }