Beispiel #1
0
        protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
        {
            Breakpoint bp = be as Breakpoint;

            if (bp == null)
            {
                throw new NotSupportedException();
            }

            BreakEventInfo breakEventInfo = new BreakEventInfo();


            //bool dres = InternalStop ();
            try {
                string extraCmd = string.Empty;
                if (bp.HitCount > 0)
                {
                    extraCmd += "-i " + bp.HitCount;
                    breakpointsWithHitCount.Add(breakEventInfo);
                }
                if (!string.IsNullOrEmpty(bp.ConditionExpression))
                {
                    if (!bp.BreakIfConditionChanges)
                    {
                        extraCmd += " -c " + bp.ConditionExpression;
                    }
                }

                ulong bh = 0;
                DebugEngineWrapper.BreakPoint engineBreakPoint = null;
                ulong off = 0;
                if (Engine.Symbols.GetOffsetByLine(bp.FileName, (uint)bp.Line, out off))
                {
                    engineBreakPoint        = Engine.AddBreakPoint(BreakPointOptions.Enabled);
                    engineBreakPoint.Offset = off;

                    bh = engineBreakPoint.Offset;
                    breakpoints[bh]       = new BreakPointWrapper(breakEventInfo, engineBreakPoint);
                    breakEventInfo.Handle = bh;
                    breakEventInfo.SetStatus(BreakEventStatus.Bound, null);

                    //if (!be.Enabled)
                    //ToDo: tell debugger engine that breakpoint is disabled
                }
                else
                {
                    breakEventInfo.SetStatus(BreakEventStatus.BindError, null);
                }



                return(breakEventInfo);
            } finally {
                //InternalResume (dres);
            }
        }
Beispiel #2
0
        protected override BreakEventInfo OnInsertBreakEvent(BreakEvent be)
        {
            Breakpoint bp = be as Breakpoint;
            if (bp == null)
                throw new NotSupportedException ();

            BreakEventInfo breakEventInfo = new BreakEventInfo ();

            //bool dres = InternalStop ();
            try {
                string extraCmd = string.Empty;
                if (bp.HitCount > 0) {
                    extraCmd += "-i " + bp.HitCount;
                    breakpointsWithHitCount.Add (breakEventInfo);
                }
                if (!string.IsNullOrEmpty (bp.ConditionExpression)) {
                    if (!bp.BreakIfConditionChanges)
                        extraCmd += " -c " + bp.ConditionExpression;
                }

                ulong bh = 0;
                DebugEngineWrapper.BreakPoint engineBreakPoint = null;
                ulong off = 0;
                if (Engine.Symbols.GetOffsetByLine(bp.FileName, (uint)bp.Line, out off))
                {
                    engineBreakPoint = Engine.AddBreakPoint(BreakPointOptions.Enabled);
                    engineBreakPoint.Offset = off;

                    bh = engineBreakPoint.Offset;
                    breakpoints[bh] = new BreakPointWrapper(breakEventInfo, engineBreakPoint);
                    breakEventInfo.Handle = bh;
                    breakEventInfo.SetStatus(BreakEventStatus.Bound, null);

                    //if (!be.Enabled)
                    //ToDo: tell debugger engine that breakpoint is disabled

                }
                else
                {
                    breakEventInfo.SetStatus(BreakEventStatus.BindError, null);
                }

                return breakEventInfo;
            } finally {
                //InternalResume (dres);
            }
        }