コード例 #1
0
        internal void StartDebugging()
        {
            if (_vm != null)
            {
                return;
            }

            _vm = VirtualMachineManager.Connect(new IPEndPoint(_ipAddress, 11000));
            _vm.EnableEvents(EventType.AssemblyLoad,
                             EventType.ThreadStart,
                             EventType.ThreadDeath,
                             EventType.AssemblyUnload,
                             EventType.UserBreak,
                             EventType.Exception,
                             EventType.UserLog,
                             EventType.KeepAlive,
                             EventType.TypeLoad);

            EventSet set = _vm.GetNextEventSet();

            if (set.Events.OfType <VMStartEvent>().Any())
            {
                _mainThread = new MonoThread(this, _engine, set.Events[0].Thread);
                _engine.Events.ThreadStarted(_mainThread);

                Task.Factory.StartNew(ReceiveThread, TaskCreationOptions.LongRunning);
            }
            else
            {
                throw new Exception("Didnt get VMStart-Event!");
            }
        }
コード例 #2
0
 public MonoExpressionCompleteEvent(MonoEngine engine, MonoThread thread, ObjectValue value, string expression, IDebugProperty2 property = null)
 {
     this.engine     = engine;
     this.thread     = thread;
     this.value      = value;
     this.expression = expression;
     this.property   = property;
 }
コード例 #3
0
 public MonoExpressionCompleteEvent(MonoEngine engine, MonoThread thread, ObjectValue value, string expression,
                                    IDebugProperty2 property = null)
 {
     _engine     = engine;
     _thread     = thread;
     _value      = value;
     _expression = expression;
     _property   = property;
 }
コード例 #4
0
        internal void Step(MonoThread thread, enum_STEPKIND sk)
        {
            if (isStepping)
            {
                return;
            }

            if (currentStepRequest == null)
            {
                currentStepRequest = _vm.CreateStepRequest(thread.ThreadMirror);
            }
            else
            {
                currentStepRequest.Disable();
            }

            isStepping = true;
            switch (sk)
            {
            case enum_STEPKIND.STEP_INTO:
                currentStepRequest.Depth = StepDepth.Into;
                break;

            case enum_STEPKIND.STEP_OUT:
                currentStepRequest.Depth = StepDepth.Out;
                break;

            case enum_STEPKIND.STEP_OVER:
                currentStepRequest.Depth = StepDepth.Over;
                break;

            default:
                return;
            }

            currentStepRequest.Size = StepSize.Line;
            currentStepRequest.Enable();
            _vm.Resume();
        }
コード例 #5
0
 internal void Execute(MonoThread debuggedMonoThread)
 {
     _vm.Resume();
 }
コード例 #6
0
 /// <summary>
 ///     Adds the specified thread.
 /// </summary>
 /// <param name="thread">The thread.</param>
 /// <param name="monoThread">The mono thread.</param>
 public void Add(ThreadInfo thread, MonoThread monoThread)
 {
     _threads[thread.Id] = monoThread;
 }