void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e)
 {
     if (!e.Added && e.Objects.Contains(currentProcess))
     {
         currentProcess = null;
     }
 }
        void DbgProcess_RuntimesChanged(object sender, DbgCollectionChangedEventArgs <DbgRuntime> e)
        {
            if (e.Added)
            {
                foreach (var r in e.Objects)
                {
                    var assemblyInfoProvider = dbgAssemblyInfoProviderService.Create(r);
                    if (assemblyInfoProvider == null)
                    {
                        continue;
                    }

                    ClassLoader classLoader;
                    var         dynamicModuleProvider = dbgDynamicModuleProviderService.Create(r);
                    if (dynamicModuleProvider == null)
                    {
                        classLoader = null;
                    }
                    else
                    {
                        classLoader = classLoaderFactory.Create(r, dynamicModuleProvider);
                    }

                    r.GetOrCreateData(() => new RuntimeInfo(this, assemblyInfoProvider, dynamicModuleProvider, classLoader));
                    r.ModulesChanged += DbgRuntime_ModulesChanged;
                }
            }
            else
            {
                foreach (var r in e.Objects)
                {
                    r.ModulesChanged -= DbgRuntime_ModulesChanged;
                }
            }
        }
Beispiel #3
0
 void BoundCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e)
 {
     Dispatcher.VerifyAccess();
     if (e.Added)
     {
         AddBoundBreakpoints_DbgThread(e.Objects);
     }
     else
     {
         RemoveBoundBreakpoints_DbgThread(e.Objects);
     }
 }
Beispiel #4
0
 void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e)
 {
     if (!e.Added)
     {
         lock (lockObj) {
             foreach (var bp in e.Objects)
             {
                 bpToHitCount.Remove(bp);
             }
         }
     }
 }
Beispiel #5
0
 void DbgRuntime_ThreadsChanged(object?sender, DbgCollectionChangedEventArgs <DbgThread> e)
 {
     lock (lockObj) {
         if (e.Added)
         {
             threads.AddRange(e.Objects);
         }
         else
         {
             foreach (var thread in e.Objects)
             {
                 bool b = threads.Remove(thread);
                 Debug.Assert(b);
             }
         }
     }
     ThreadsChanged?.Invoke(this, new DbgCollectionChangedEventArgs <DbgThread>(e.Objects, added: e.Added));
 }
 void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e)
 {
     if (e.Added)
     {
         foreach (var p in e.Objects)
         {
             p.RuntimesChanged  += DbgProcess_RuntimesChanged;
             p.IsRunningChanged += DbgProcess_IsRunningChanged;
         }
     }
     else
     {
         foreach (var p in e.Objects)
         {
             p.RuntimesChanged  -= DbgProcess_RuntimesChanged;
             p.IsRunningChanged -= DbgProcess_IsRunningChanged;
         }
     }
 }
Beispiel #7
0
 void OnBreakpointsAdded_UI(DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e)
 {
     uiDispatcher.VerifyAccess();
     if (!e.Added)
     {
         throw new InvalidOperationException();
     }
     foreach (var bp in e.Objects)
     {
         if (bp.IsHidden)
         {
             continue;
         }
         var location = dbgBreakpointGlyphTextMarkerLocationProviderService.GetLocation(bp);
         if (location != null)
         {
             bp.GetOrCreateData(() => new BreakpointData(location));
             UpdateMarker(bp);
             continue;
         }
     }
 }
Beispiel #8
0
 void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e)
 {
     if (e.Added)
     {
         UI(() => OnBreakpointsAdded_UI(e));
     }
     else
     {
         var list = new List <(DbgCodeBreakpoint breakpoint, BreakpointData data)>(e.Objects.Count);
         foreach (var bp in e.Objects)
         {
             if (!bp.TryGetData(out BreakpointData data))
             {
                 continue;
             }
             list.Add((bp, data));
         }
         if (list.Count > 0)
         {
             UI(() => OnBreakpointsRemoved_UI(list));
         }
     }
 }
Beispiel #9
0
 // DbgManager thread
 void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e)
 {
     if (!e.Added)
     {
         bool raiseEvent = false;
         lock (lockObj) {
             if (processes.Count != 0)
             {
                 for (int i = processes.Count - 1; i >= 0; i--)
                 {
                     if (e.Objects.Contains(processes[i]))
                     {
                         processes.RemoveAt(i);
                     }
                 }
                 raiseEvent = processes.Count == 0;
             }
         }
         if (raiseEvent)
         {
             NotifyOwner(success: true);
         }
     }
 }
        void DbgRuntime_ModulesChanged(object sender, DbgCollectionChangedEventArgs <DbgModule> e)
        {
            if (e.Added)
            {
                if (!TryGetRuntimeInfo((DbgRuntime)sender, out var info))
                {
                    return;
                }

                List <(DbgModule manifestModule, DbgModule module)> list = null;
                foreach (var module in e.Objects)
                {
                    var manifestModule = info.AssemblyInfoProvider.GetManifestModule(module);
                    // If it's the manifest module, it can't possibly have been inserted in the treeview
                    if (manifestModule == null || manifestModule == module)
                    {
                        continue;
                    }

                    if (list == null)
                    {
                        list = new List <(DbgModule, DbgModule)>();
                    }
                    list.Add((manifestModule, module));
                }
                if (list != null)
                {
                    uiDispatcher.UI(() => {
                        foreach (var t in list)
                        {
                            OnModuleAdded_UI(info, t.manifestModule, t.module);
                        }
                    });
                }
            }
        }
Beispiel #11
0
 void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) => BreakpointsModified();
Beispiel #12
0
 void DbgModuleBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgModuleBreakpoint> e) => Save();
Beispiel #13
0
 void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) =>
 BreakpointsChanged?.Invoke(this, e);
 // DbgManager thread
 void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e) =>
 InitializeProcesses_DbgManager(e.Objects, e.Added);
Beispiel #15
0
 // DbgThread
 void DbgRuntime_ModulesChanged(object?sender, DbgCollectionChangedEventArgs <DbgModule> e) =>
 UI(() => DbgRuntime_ModulesChanged_UI((DbgRuntime)sender !, e.Objects, e.Added));
Beispiel #16
0
 // DbgThread
 void Process_RuntimesChanged(object?sender, DbgCollectionChangedEventArgs <DbgRuntime> e) =>
 UI(() => Process_RuntimesChanged_UI(e.Objects, e.Added));
Beispiel #17
0
 void DbgExceptionSettingsService_ExceptionsChanged(object sender, DbgCollectionChangedEventArgs <DbgExceptionSettingsInfo> e) => Save();
 private void MyCustomMethod(DbgManager dbgManager, DbgCollectionChangedEventArgs <DbgProcess> args)
 {
 }