Пример #1
0
            public void AddBreakpoint(int typeToken, DbgEngineBoundCodeBreakpoint boundBreakpoint, Action onTypeLoaded)
            {
                var pendingBreakpoint = new PendingBreakpoint(boundBreakpoint, onTypeLoaded);

                if (loadedTypes.Contains(typeToken))
                {
                    NotifyLoaded(pendingBreakpoint);
                }
                else
                {
                    if (!pendingBreakpoints.TryGetValue(typeToken, out var list))
                    {
                        pendingBreakpoints.Add(typeToken, list = new List <PendingBreakpoint>());
                    }
                    list.Add(pendingBreakpoint);
                }
            }
Пример #2
0
 void EnableBreakpointCore(DbgModule module, DmdMethodBase method, DbgEngineBoundCodeBreakpoint ebp, DbgDotNetCodeLocation location)
 {
     debuggerThread.VerifyAccess();
     if (ebp.BoundCodeBreakpoint.IsClosed)
     {
         return;
     }
     using (TempBreak()) {
         var info = CreateBreakpoint(method.Module, location.Module, location.Token, location.Offset);
         if (!ebp.BoundCodeBreakpoint.TryGetData(out BoundBreakpointData bpData))
         {
             Debug.Assert(ebp.BoundCodeBreakpoint.IsClosed);
             return;
         }
         Debug.Assert(bpData.Breakpoint == null);
         bpData.Breakpoint = info.bp;
         if (bpData.Breakpoint != null)
         {
             bpData.Breakpoint.Tag = bpData;
         }
         ebp.UpdateMessage(info.error);
     }
 }
Пример #3
0
 public PendingBreakpoint(DbgEngineBoundCodeBreakpoint boundBreakpoint, Action onTypeLoaded)
 {
     BoundBreakpoint = boundBreakpoint;
     OnTypeLoaded    = onTypeLoaded;
 }