예제 #1
0
        private AD7PendingBreakpoint BindToAddress(string bkptno, ulong addr, /*OPTIONAL*/ TupleValue frame, out AD7BoundBreakpoint bbp)
        {
            bbp = null;
            AD7PendingBreakpoint pending = CodeBreakpoints.FirstOrDefault((p) => { return(p.BreakpointId == bkptno); });

            if (pending == null)
            {
                return(null);
            }
            // the breakpoint number is known, check to see if it is known to be bound to this address
            bbp = Array.Find(pending.EnumBoundBreakpoints(), (b) => b.Addr == addr);
            if (bbp == null)
            {
                // add this address as a bound breakpoint
                bbp = Array.Find(pending.EnumBoundBreakpoints(), (b) => b.Addr == 0);
                if (bbp != null)    // <MULTIPLE>
                {
                    bbp.UpdateAddr(addr);
                }
                else
                {
                    bbp = pending.AddBoundBreakpoint(new BoundBreakpoint(pending.PendingBreakpoint, addr, frame));
                }
            }
            return(pending);
        }
예제 #2
0
        private void RebindAddresses(AD7PendingBreakpoint pending, List <BoundBreakpoint> boundList)
        {
            if (boundList.Count == 0)
            {
                return;
            }
            var bkpt = Array.Find(pending.EnumBoundBreakpoints(), (b) => b.Addr == 0);
            int i    = 0;

            if (bkpt != null)
            {
                bkpt.UpdateAddr(boundList[0].Addr);     // replace <MULTIPLE> placeholder address
                i = 1;
            }
            for (; i < boundList.Count; ++i)
            {
                pending.AddBoundBreakpoint(boundList[i]);
            }
        }
예제 #3
0
 private void RebindAddresses(AD7PendingBreakpoint pending, List<BoundBreakpoint> boundList)
 {
     if (boundList.Count == 0)
     {
         return;
     }
     var bkpt = Array.Find(pending.EnumBoundBreakpoints(), (b) => b.Addr == 0);
     int i = 0;
     if (bkpt != null)
     {
         bkpt.UpdateAddr(boundList[0].Addr);     // replace <MULTIPLE> placeholder address
         i = 1;
     }
     for (; i < boundList.Count; ++i)
     {
         pending.AddBoundBreakpoint(boundList[i]);
     }
 }