Beispiel #1
0
        void AddMarkers(bool updateActiveStatements)
        {
            Debug.Assert(currentStatementMarker == null);
            Debug.Assert(callReturnMarker == null);
            bool tooManyFrames;
            var  frames = stackFrameManager.GetFrames(out tooManyFrames);

            if (frames.Count == 0)
            {
                return;
            }

            var methodOffset = GetModuleTokenId(frames[0]);

            if (methodOffset != null)
            {
                currentStatementMarker = glyphTextMarkerService.AddMarker(
                    methodOffset.Value.Key,
                    methodOffset.Value.Value,
                    new ImageReference(GetType().Assembly, "CurrentStatement"),
                    ThemeClassificationTypeNameKeys.CurrentStatementMarker,
                    null,
                    classificationTypeCurrentStatement,
                    GlyphTextMarkerServiceZIndexes.CurrentStatement,
                    null,
                    null,
                    textViewFilter);
            }

            int selectedFrameNumber = stackFrameManager.SelectedFrameNumber;

            methodOffset = selectedFrameNumber != 0 && selectedFrameNumber < frames.Count ? GetModuleTokenId(frames[selectedFrameNumber]) : null;
            if (methodOffset != null)
            {
                callReturnMarker = glyphTextMarkerService.AddMarker(
                    methodOffset.Value.Key,
                    methodOffset.Value.Value,
                    new ImageReference(GetType().Assembly, "CallReturn"),
                    ThemeClassificationTypeNameKeys.CallReturnMarker,
                    null,
                    classificationTypeCallReturn,
                    GlyphTextMarkerServiceZIndexes.ReturnStatement,
                    null,
                    null,
                    textViewFilter);
            }

            if (updateActiveStatements)
            {
                activeStatementService.Value.OnNewActiveStatements(frames);
            }
        }
Beispiel #2
0
        void UpdateMarker(ILCodeBreakpoint ilbp)
        {
            RemoveMarker(ilbp);
            var info   = GetBreakpointMarkerInfo(ilbp);
            var marker = glyphTextMarkerService.AddMarker(ilbp.MethodToken, ilbp.ILOffset, info.ImageReference, info.MarkerTypeName, info.SelectedMarkerTypeName, info.ClassificationType, info.ZIndex, GlyphTextMarkerHelper.GetTag(ilbp), ilCodeBreakpointGlyphTextMarkerHandler, textViewFilter);

            toMethodMarkers.Add(ilbp, marker);
        }