示例#1
0
        internal void RemoveBreakPoint(PythonBreakpoint unboundBreakpoint)
        {
            DebugWriteCommand("Remove Breakpoint");
            _breakpoints.Remove(unboundBreakpoint.Id);

            DisableBreakPoint(unboundBreakpoint);
        }
示例#2
0
 internal void SetBreakPointCondition(PythonBreakpoint breakpoint)
 {
     DebugWriteCommand("Set BP Condition");
     _socket.Send(SetBreakPointConditionCommandBytes);
     _socket.Send(BitConverter.GetBytes(breakpoint.Id));
     SendCondition(breakpoint);
 }
示例#3
0
        public PythonBreakpoint AddBreakPoint(string filename, int lineNo, string condition = "", bool breakWhenChanged = false)
        {
            int id  = _breakpointCounter++;
            var res = new PythonBreakpoint(this, filename, lineNo, condition, breakWhenChanged, id);

            _breakpoints[id] = res;
            return(res);
        }
示例#4
0
 internal void BindBreakpoint(PythonBreakpoint breakpoint)
 {
     DebugWriteCommand("Bind Breakpoint");
     _socket.Send(SetBreakPointCommandBytes);
     _socket.Send(BitConverter.GetBytes(breakpoint.Id));
     _socket.Send(BitConverter.GetBytes(breakpoint.LineNo));
     SendString(_socket, MapFile(breakpoint.Filename));
     SendCondition(breakpoint);
 }
示例#5
0
 internal void DisableBreakPoint(PythonBreakpoint unboundBreakpoint)
 {
     if (_socket != null && _socket.Connected)
     {
         DebugWriteCommand("Disable Breakpoint");
         _socket.Send(RemoveBreakPointCommandBytes);
         _socket.Send(BitConverter.GetBytes(unboundBreakpoint.LineNo));
         _socket.Send(BitConverter.GetBytes(unboundBreakpoint.Id));
     }
 }
示例#6
0
 internal void SetBreakPointPassCount(PythonBreakpoint breakpoint) {
     DebugWriteCommand("Set BP pass count");
     lock (_streamLock) {
         _stream.Write(SetBreakPointPassCountCommandBytes);
         _stream.WriteInt32(breakpoint.Id);
         SendPassCount(breakpoint);
     }
 }
示例#7
0
 private void SendPassCount(PythonBreakpoint breakpoint) {
     DebugWriteCommand("Send BP pass count");
     _stream.WriteInt32((int)breakpoint.PassCountKind);
     _stream.WriteInt32(breakpoint.PassCount);
 }
示例#8
0
 internal void SetBreakPointCondition(PythonBreakpoint breakpoint) {
     DebugWriteCommand("Set BP Condition");
     lock (_streamLock) {
         _stream.Write(SetBreakPointConditionCommandBytes);
         _stream.WriteInt32(breakpoint.Id);
         SendCondition(breakpoint);
     }
 }
示例#9
0
 private void SendCondition(PythonBreakpoint breakpoint) {
     DebugWriteCommand("Send BP Condition");
     _stream.WriteInt32((int)breakpoint.ConditionKind);
     _stream.WriteString(breakpoint.Condition ?? "");
 }
示例#10
0
 public PythonBreakpoint AddBreakPoint(
     string filename,
     int lineNo,
     PythonBreakpointConditionKind conditionKind = PythonBreakpointConditionKind.Always,
     string condition = "",
     PythonBreakpointPassCountKind passCountKind = PythonBreakpointPassCountKind.Always,
     int passCount = 0
 ) {
     int id = _breakpointCounter++;
     var res = new PythonBreakpoint(this, filename, lineNo, conditionKind, condition, passCountKind, passCount, id);
     _breakpoints[id] = res;
     return res;
 }
示例#11
0
        internal void RemoveBreakPoint(PythonBreakpoint unboundBreakpoint) {
            DebugWriteCommand("Remove Breakpoint");
            _breakpoints.Remove(unboundBreakpoint.Id);

            DisableBreakPoint(unboundBreakpoint);
        }
示例#12
0
 public BreakpointEventArgs(PythonBreakpoint breakpoint) {
     _breakpoint = breakpoint;
 }
示例#13
0
 public BreakpointHitEventArgs(PythonBreakpoint breakpoint, PythonThread thread) {
     _breakpoint = breakpoint;
     _thread = thread;
 }
示例#14
0
 private void SendCondition(PythonBreakpoint breakpoint)
 {
     DebugWriteCommand("Send BP Condition");
     SendString(_socket, breakpoint.Condition ?? "");
     _socket.Send(BitConverter.GetBytes(breakpoint.BreakWhenChanged ? 1 : 0));
 }
示例#15
0
 internal void SetBreakPointHitCount(PythonBreakpoint breakpoint, int count) {
     DebugWriteCommand("Set BP hit count");
     lock (_streamLock) {
         _stream.Write(SetBreakPointHitCountCommandBytes);
         _stream.WriteInt32(breakpoint.Id);
         _stream.WriteInt32(count);
     }
 }
示例#16
0
        internal Task<int> GetBreakPointHitCountAsync(PythonBreakpoint breakpoint) {
            DebugWriteCommand("Get BP hit count");

            int reqId = _ids.Allocate();
            var tcs = new TaskCompletionSource<int>();
            lock (_pendingGetHitCountRequestsLock) {
                _pendingGetHitCountRequests[reqId] = tcs;
            }

            lock (_streamLock) {
                _stream.Write(GetBreakPointHitCountCommandBytes);
                _stream.WriteInt32(reqId);
                _stream.WriteInt32(breakpoint.Id);
            }

            return tcs.Task;
        }
示例#17
0
 public BreakpointEventArgs(PythonBreakpoint breakpoint)
 {
     _breakpoint = breakpoint;
 }
示例#18
0
 internal void DisableBreakPoint(PythonBreakpoint unboundBreakpoint) {
     if (_stream != null) {
         DebugWriteCommand("Disable Breakpoint");
         lock (_streamLock) {
             if (unboundBreakpoint.IsDjangoBreakpoint) {
                 _stream.Write(RemoveDjangoBreakPointCommandBytes);
             } else {
                 _stream.Write(RemoveBreakPointCommandBytes);
             }
             _stream.WriteInt32(unboundBreakpoint.LineNo);
             _stream.WriteInt32(unboundBreakpoint.Id);
             if (unboundBreakpoint.IsDjangoBreakpoint) {
                 _stream.WriteString(unboundBreakpoint.Filename);
             }
         }
     }
 }
示例#19
0
 public BreakpointHitEventArgs(PythonBreakpoint breakpoint, PythonThread thread)
 {
     _breakpoint = breakpoint;
     _thread     = thread;
 }
示例#20
0
 public PythonBreakpoint AddDjangoBreakPoint(string filename, int lineNo) {
     int id = _breakpointCounter++;
     var res = new PythonBreakpoint(this, filename, lineNo, PythonBreakpointConditionKind.Always, "", PythonBreakpointPassCountKind.Always, 0 , id, true);
     _breakpoints[id] = res;
     return res;
 }
示例#21
0
        internal void BindBreakpoint(PythonBreakpoint breakpoint) {
            DebugWriteCommand(String.Format("Bind Breakpoint IsDjango: {0}", breakpoint.IsDjangoBreakpoint));

            lock (_streamLock) {
                if (breakpoint.IsDjangoBreakpoint) {
                    _stream.Write(AddDjangoBreakPointCommandBytes);
                } else {
                    _stream.Write(SetBreakPointCommandBytes);
                }
                _stream.WriteInt32(breakpoint.Id);
                _stream.WriteInt32(breakpoint.LineNo);
                _stream.WriteString(MapFile(breakpoint.Filename));
                if (!breakpoint.IsDjangoBreakpoint) {
                    SendCondition(breakpoint);
                    SendPassCount(breakpoint);
                }
            }
        }