Beispiel #1
0
 public static bool IsInNestedScriptBlock(Ast ast, LineBreakpoint breakpoint)
 {
     LineBreakpoint.CheckBreakpointInScript visitor = new LineBreakpoint.CheckBreakpointInScript {
         _breakpoint = breakpoint
     };
     ast.InternalVisit(visitor);
     return(visitor._result);
 }
        internal Breakpoint NewLineBreakpoint(string path, int line, ScriptBlock action)
        {
            ++this._numBreakpoints;
            LineBreakpoint breakpoint = new LineBreakpoint(this._context, path, line, action);

            this._context.Debugger.AddBreakpointToRunningScripts(breakpoint);
            this._lineBreakpoints.Add((Breakpoint)breakpoint);
            return((Breakpoint)breakpoint);
        }
Beispiel #3
0
        internal void RemoveLineBreakpoint(LineBreakpoint breakpoint)
        {
            Tuple <WeakReference, List <LineBreakpoint> > tuple;

            this._pendingBreakpoints.Remove(breakpoint);
            if (this._boundBreakpoints.TryGetValue(breakpoint.Script, out tuple))
            {
                tuple.Item2.Remove(breakpoint);
            }
        }
        internal void Remove(LineBreakpoint breakpoint)
        {
            List <Breakpoint> breakpointList = breakpoint.Type != Breakpoint.BreakpointType.Line ? this._statementBreakpoints : this._lineBreakpoints;

            if (!breakpointList.Contains((Breakpoint)breakpoint))
            {
                return;
            }
            breakpointList.Remove((Breakpoint)breakpoint);
            --this._numBreakpoints;
        }
        public void AddBreakpoint(int lineNumber)
        {
            if (_cachedScriptPath == null)
                CacheRunbook();

            var lineBreakpoint = new LineBreakpoint(lineNumber);

            // We can only have one breakpoint per line
            if (_breakpoints.Contains(lineBreakpoint))
                return;

            _breakpoints.Add(lineBreakpoint);
        }
Beispiel #6
0
 private void RemoveBreakpointFromRunningScripts(LineBreakpoint breakpoint)
 {
     foreach (Debugger.ScriptBlockInfo runningScript in this._runningScriptStack)
     {
         if (runningScript.DebugInfo != null && breakpoint.Script.Equals(runningScript.ScriptBlock.File, StringComparison.OrdinalIgnoreCase))
         {
             runningScript.DebugInfo.RemoveBreakpoint(breakpoint);
             if (runningScript.DebugInfo.FromScript)
             {
                 break;
             }
         }
     }
 }
Beispiel #7
0
        internal void RemoveBreakpoint(Breakpoint breakpoint)
        {
            if (this._idToBreakpoint.ContainsKey(breakpoint.Id))
            {
                this._idToBreakpoint.Remove(breakpoint.Id);
            }
            ScriptBreakpointInfo scriptBreakpointInfo = (ScriptBreakpointInfo)null;

            if (breakpoint.IsScriptBreakpoint)
            {
                if (!this._scriptPathToBreakpointInfo.TryGetValue(breakpoint.Script, out scriptBreakpointInfo))
                {
                    return;
                }
            }
            else
            {
                scriptBreakpointInfo = this._globalScriptBreakpointInfo;
            }
            switch (breakpoint.Type)
            {
            case Breakpoint.BreakpointType.Line:
            case Breakpoint.BreakpointType.Statement:
                LineBreakpoint breakpoint1 = (LineBreakpoint)breakpoint;
                scriptBreakpointInfo.Remove(breakpoint1);
                this.RemoveBreakpointFromRunningScripts(breakpoint1);
                break;

            case Breakpoint.BreakpointType.Variable:
                scriptBreakpointInfo.Remove((VariableBreakpoint)breakpoint);
                break;

            case Breakpoint.BreakpointType.Command:
                scriptBreakpointInfo.Remove((CommandBreakpoint)breakpoint);
                break;
            }
            if (scriptBreakpointInfo.NumBreakpoints == 0 && breakpoint.IsScriptBreakpoint)
            {
                this._scriptPathToBreakpointInfo.Remove(breakpoint.Script);
            }
            this.OnBreakpointUpdated(new BreakpointUpdatedEventArgs(breakpoint, BreakpointUpdateType.Removed));
        }
Beispiel #8
0
 internal void AddBreakpointToRunningScripts(LineBreakpoint breakpoint)
 {
     foreach (Debugger.ScriptBlockInfo runningScript in this._runningScriptStack)
     {
         if (runningScript.DebugInfo != null && breakpoint.Script.Equals(runningScript.ScriptBlock.File, StringComparison.OrdinalIgnoreCase))
         {
             if (breakpoint.Type == Breakpoint.BreakpointType.Line)
             {
                 runningScript.DebugInfo.AddLineBreakpoint(breakpoint);
             }
             else
             {
                 runningScript.DebugInfo.AddStatementBreakpoint(breakpoint);
             }
             if (runningScript.DebugInfo.FromScript)
             {
                 break;
             }
         }
     }
 }
Beispiel #9
0
 public static bool IsInNestedScriptBlock(Ast ast, LineBreakpoint breakpoint)
 {
     var visitor = new CheckBreakpointInScript { _breakpoint = breakpoint };
     ast.InternalVisit(visitor);
     return visitor._result;
 }
Beispiel #10
0
 private Breakpoint AddLineBreakpoint(LineBreakpoint breakpoint)
 {
     this.AddBreakpointCommon(breakpoint);
     this._pendingBreakpoints.Add(breakpoint);
     return(breakpoint);
 }
Beispiel #11
0
 private Breakpoint AddLineBreakpoint(LineBreakpoint breakpoint)
 {
     this.AddBreakpointCommon(breakpoint);
     this._pendingBreakpoints.Add(breakpoint);
     return breakpoint;
 }
Beispiel #12
0
 internal void RemoveLineBreakpoint(LineBreakpoint breakpoint)
 {
     Tuple<WeakReference, List<LineBreakpoint>> tuple;
     this._pendingBreakpoints.Remove(breakpoint);
     if (this._boundBreakpoints.TryGetValue(breakpoint.Script, out tuple))
     {
         tuple.Item2.Remove(breakpoint);
     }
 }
Beispiel #13
0
        internal void RemoveLineBreakpoint(LineBreakpoint breakpoint)
        {
            _pendingBreakpoints.Remove(breakpoint);

            Tuple<WeakReference, List<LineBreakpoint>> value;
            if (_boundBreakpoints.TryGetValue(breakpoint.Script, out value))
            {
                value.Item2.Remove(breakpoint);
            }
        }
        public void RemoveBreakpoint(int lineNumber)
        {
            var lineBreakpoint = new LineBreakpoint(lineNumber);

            if (!_breakpoints.Contains(lineBreakpoint))
                return;

            _breakpoints.Remove(lineBreakpoint);
        }