2013-01-09 13 views
5

Desidero definire alcuni set di punti di interruzione in Visual Studio, in modo che sia possibile alternare tra loro.Come definire insiemi di punti di interruzione in Visual Studio?

Da un set, intendo una raccolta di punti di interruzione in determinate righe che definisco. Ho molti scenari che voglio passare tra questi set per facilitare il mio debug.

Ad esempio:

Set 1: breakpoints at line 1, line 3, line 5, line 7 
Set 2: breakpoints at line 2, line 4, line 6, line 8, 

Ci sono dei modi per farlo in Visual Studio (2008 e sopra sono preferiti), o ci sono tutti i componenti aggiuntivi?

risposta

2

Questa funzione è disponibile in Visual Studio 2010 e 2012 nella finestra dei punti di interruzione . http://msdn.microsoft.com/en-us/library/dd293674.aspx

(c) di Visual Studio Team (team di prodotto, Microsoft) nov 21, 2012

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2394909-breakpoint-sets-or-groups-enable-disable-breakp

Inoltre, ecco macro poco che implementa questa funzionalità in Visual Studio 2008. Si può copiatelo in qualsiasi modulo in macro (Strumenti> Macro> Macro Explorer> fai clic con il tasto destro del mouse su qualsiasi modulo> Modifica> incolla lì), quindi aggiungilo come comando a qualsiasi menu (tramite Strumenti> Personalizza ...)

Dim savePath = "c:\temp" 
Sub SaveBreakpoints() 
    Dim fname As String 
    Dim lBreakpointsList As System.Collections.Generic.List(Of Breakpoint) 
    Dim fileList = IO.Directory.GetFiles(savePath) 
    Dim lFiles = "" 
    For Each lFile In fileList 
     lFiles = String.Concat(lFiles, IO.Path.GetFileNameWithoutExtension(lFile), vbCrLf) 
    Next 
    fname = InputBox(String.Concat("Existing sets:", vbCrLf, lFiles, vbCrLf, "Name of new set:"), "Save Breakpoints", "1") 
    If fname = "" Then 
     Return 
    End If 
    lBreakpointsList = New System.Collections.Generic.List(Of Breakpoint) 
    For Each lBreakpoint As EnvDTE.Breakpoint In DTE.Debugger.Breakpoints 
     lBreakpointsList.Add(New Breakpoint(lBreakpoint.File, lBreakpoint.FileLine, lBreakpoint.Condition)) 
    Next 

    Using fs As New IO.StreamWriter(String.Concat("c:\temp\", fname, ".txt")) 
     For Each lBreakpoint As Breakpoint In lBreakpointsList 
      fs.WriteLine(String.Format("{0} ||| {1} ||| {2}", lBreakpoint.File, lBreakpoint.Line, lBreakpoint.Condition)) 
     Next 
    End Using 
End Sub 

Sub RestoreBreakpoints() 
    Dim fname As String 
    Dim lBreakpointsList As System.Collections.Generic.List(Of Breakpoint) 
    Dim lProperties As String() 
    Dim fileList = IO.Directory.GetFiles(savePath) 
    Dim lFiles = "" 
    For Each lFile In fileList 
     lFiles = String.Concat(lFiles, IO.Path.GetFileNameWithoutExtension(lFile), vbCrLf) 
    Next 
    fname = InputBox(String.Concat("Enter name of set to restore. Existing sets:", vbCrLf, vbCrLf, lFiles), "Restore Breakpoints", "1") 
    If fname = "" Then 
     Return 
    End If 
    lBreakpointsList = New Collections.Generic.List(Of Breakpoint) 
    Dim lBp As Breakpoint 
    Using fs As New IO.StreamReader(String.Concat("c:\temp\", fname, ".txt")) 
     While Not fs.EndOfStream 
      lProperties = fs.ReadLine().Split(New String() {" ||| "}, StringSplitOptions.None) 
      lBp = New Breakpoint(lProperties(0), lProperties(1), lProperties(2)) 
      lBreakpointsList.Add(lBp) 
     End While 
    End Using 
    Try 
     DTE.ExecuteCommand("Debug.DeleteAllBreakpoints") 
    Catch ex As Exception 
    End Try 
    For Each lBp1 As Breakpoint In lBreakpointsList 
     DTE.Debugger.Breakpoints.Add(, lBp1.File, Convert.ToInt32(lBp1.Line), , lBp1.Condition) 
    Next 
End Sub 

Class Breakpoint 
    Public File 
    Public Line 
    Public Condition 

    Public Sub New(ByVal pFile, ByVal pLine, ByVal pCondition) 
     File = pFile 
     Line = pLine 
     Condition = pCondition 
    End Sub 
End Class 
0

È possibile fare clic sull'avvio della linea. Quindi fai clic su Punti di interruzione> Inserisci punti di interruzione. Puoi farlo per ogni singola riga. Penso che sia quello che stai cercando.

+0

Sembravi fraintendere la mia domanda. Voglio chiedere una serie di punti di interruzione – onmyway133