Wie füge ich Debug Haltepunkte angezeigt Zeilen in einem „Ergebnisse suchen“ Fenster in Visual Studio

StackOverflow https://stackoverflow.com/questions/73063

Frage

In Visual Studio 2005-2015 ist es möglich, alle Linien, die bestimmte Hinweise zu finden und sie in einem „Ergebnisse finden“ Fenster angezeigt werden soll.

Nun, da diese Ergebniszeilen angezeigt werden, gibt es eine Tastenkombination, die alle von ihnen Debug-Stützpunkte Hinzufügen erlauben würde?

War es hilfreich?

Lösung

Diese Antwort funktioniert nicht für Visual Studio 2015 oder später. Eine neuere Antwort kann hier .

Sie können dies recht einfach mit einem Visual Studio-Makro. Innerhalb Visual Studio, drücken Sie Alt-F11, um das Makro-IDE zu öffnen und ein neues Modul mit der rechten Maustaste auf MyMacros hinzufügen und Auswahl hinzufügen | Modul hinzufügen ...

Fügen Sie folgende in dem Quellcode-Editor:

Imports System
Imports System.IO
Imports System.Text.RegularExpressions
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module CustomMacros
    Sub BreakpointFindResults()
        Dim findResultsWindow As Window = DTE.Windows.Item(Constants.vsWindowKindFindResults1)

        Dim selection As TextSelection
        selection = findResultsWindow.Selection
        selection.SelectAll()

        Dim findResultsReader As New StringReader(selection.Text)
        Dim findResult As String = findResultsReader.ReadLine()

        Dim findResultRegex As New Regex("(?<Path>.*?)\((?<LineNumber>\d+)\):")

        While Not findResult Is Nothing
            Dim findResultMatch As Match = findResultRegex.Match(findResult)

            If findResultMatch.Success Then
                Dim path As String = findResultMatch.Groups.Item("Path").Value
                Dim lineNumber As Integer = Integer.Parse(findResultMatch.Groups.Item("LineNumber").Value)

                Try
                    DTE.Debugger.Breakpoints.Add("", path, lineNumber)
                Catch ex As Exception
                    ' breakpoints can't be added everywhere
                End Try
            End If

            findResult = findResultsReader.ReadLine()
        End While
    End Sub
End Module

In diesem Beispiel wird die Ergebnisse in den „Ergebnissen auf 1“ Fenster; Sie können eine individuelle Verknüpfung für jedes Ergebnisfenster erstellt werden soll.

Sie können eine Tastenkombination erstellen, indem Sie auf Extras | Optionen ... und Auswahl von Tastatur unter der Umwelt in der Navigation auf der linken Seite. Wählen Sie ein Makro, und weisen jede Verknüpfung, die Sie mögen.

Sie können auch, indem Sie auf Extras Ihr Makro zu einem Menü oder einer Symbolleiste hinzufügen | Anpassen ... und wählen Sie die Makros in der Navigation auf der linken Seite. Sobald Sie Ihren Makro in der Liste finden, können Sie es zu jedem Menü oder Symbolleiste ziehen, in dem sie ihren Text oder Symbol kann individuell angepasst werden, was Sie wollen.

Andere Tipps

Wenn Sie das Wort genau suchen, können Sie ein Paar von Tastenkombinationen verwenden kann es schnell zu tun.

Extras -> Optionen -> Enviroment -> Tastatur

  • Edit.GoToFindResults1NextLocation
  • EditorContextMenus.CodeWindow.Breakpoint.InsertBreakpoint

Weisen Sie sie + Steuerung Alt + F11 und F10 und Sie können sehr schnell alle Ergebnisse gehen. Ich habe nicht eine Abkürzung für den Gang zur nächsten Referenz jedoch gefunden.

brauchte ich etwas ähnliches alle Haltepunkte deaktivieren und einen Haltepunkt auf jedem „Fang ex als Ausnahme“ platzieren. Allerdings erweiterte ich dies ein wenig, so dass es einen Haltepunkt bei jedem Auftreten der Zeichenfolge platzieren werden Sie ausgewählt haben. Alles, was Sie mit, dies zu tun müssen, ist die Zeichenfolge, die Sie auf einen Haltepunkt haben wollen markieren und das Makro auszuführen.

 Sub BreakPointAtString()

    Try
        DTE.ExecuteCommand("Debug.DisableAllBreakpoints")
    Catch ex As Exception

    End Try

    Dim tsSelection As String = DTE.ActiveDocument.Selection.text
    DTE.ActiveDocument.Selection.selectall()
    Dim AllText As String = DTE.ActiveDocument.Selection.Text

    Dim findResultsReader As New StringReader(AllText)
    Dim findResult As String = findResultsReader.ReadLine()
    Dim lineNum As Integer = 1

    Do Until findResultsReader.Peek = -1
        lineNum += 1
        findResult = findResultsReader.ReadLine()
        If Trim(findResult) = Trim(tsSelection) Then
            DTE.ActiveDocument.Selection.GotoLine(lineNum)
            DTE.ExecuteCommand("Debug.ToggleBreakpoint")
        End If
    Loop

End Sub

Hoffe, es funktioniert für Sie:)

Paul, vielen Dank, aber ich habe das folgende Fehlermeldung (Meldungsfeld), kann ich meinen PC neu starten müssen:

Error
---------------------------
Error HRESULT E_FAIL has been returned from a call to a COM component.
---------------------------
OK   
---------------------------

Ich würde die folgende Lösung vorschlagen, die sehr einfach ist, aber es funktioniert für mich

Sub BreakPointsFromSearch()
    Dim n As Integer = InputBox("Enter the number of search results")

    For i = 1 To n
        DTE.ExecuteCommand("Edit.GoToNextLocation")
        DTE.ExecuteCommand("Debug.ToggleBreakpoint")            
    Next
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top