Exemple #1
0
        private void Session_AfterRequest(object sender, RAfterRequestEventArgs e)
        {
            bool?sentContinue;

            lock (_browseLock) {
                var browseEventArgs = _currentBrowseEventArgs;
                if (browseEventArgs == null || browseEventArgs.Context.Contexts != e.Contexts)
                {
                    // This AfterRequest does not correspond to a Browse prompt, or at least not one
                    // that we have seen before (and paused on), so there's nothing to do.
                    return;
                }

                _currentBrowseEventArgs = null;
                sentContinue            = _sentContinue;
                _sentContinue           = true;
            }

            if (sentContinue == false)
            {
                // User has explicitly typed something at the Browse prompt, so tell the debugger that
                // we're moving on by issuing a dummy Continue request to switch it to the running state.
                var    vsShell = (IVsUIShell)Package.GetGlobalService(typeof(SVsUIShell));
                Guid   group   = VSConstants.GUID_VSStandardCommandSet97;
                object arg     = null;
                var    ex      = Marshal.GetExceptionForHR(vsShell.PostExecCommand(ref group, (uint)VSConstants.VSStd97CmdID.Start, 0, ref arg));
                Trace.Assert(ex == null);
            }
        }
Exemple #2
0
        private void Tracer_Browse(object sender, RBrowseEventArgs e)
        {
            lock (_browseLock) {
                _currentBrowseEventArgs = e;
                _sentContinue           = false;
            }

            // If we hit a breakpoint or completed a step, we have already reported the stop from the corresponding handlers.
            // Otherwise, this is just a random Browse prompt, so raise a dummy breakpoint event with no breakpoints to stop.
            if (e.BreakpointsHit.Count == 0 && !e.HasStepCompleted)
            {
                var bps = new AD7BoundBreakpointEnum(new IDebugBoundBreakpoint2[0]);
                var evt = new AD7BreakpointEvent(bps);
                Send(evt, AD7BreakpointEvent.IID);
            }
        }