2013-01-09 8 views
5

私はそれらの間で切り替えることができるように、Visual Studioでいくつかのブレークポイントのセットを定義したいと思います。Visual Studioでブレークポイントのセットを定義する方法は?

セットとは、私が定義する特定の行でブレークポイントの集合を意味します。私はデバッグを簡単にするためにこれらのセットを切り替えたい多くのシナリオを持っています。例えば

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

のVisual Studio(2008以上が好ましい)でそれを行うにはどんな方法がありますが、または任意のアドインがあるのですか?

答えて

2

この機能は、Visual Studio 2010および2012の[ ブレークポイント]ウィンドウで使用できます。 http://msdn.microsoft.com/en-us/library/dd293674.aspx

(C)のVisual Studioチーム(プロダクトチーム、マイクロソフト)2012年11月21日

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

はまた、ここでのVisual Studio 2008あなたは月にこの機能を実装する小さなマクロですマクロ内の任意のモジュールにコピーするだけです(ツール>マクロ>マクロエクスプローラ>任意のモジュールを右クリック>編集>そこに貼り付けます)。

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

行の先頭をクリックすることができます。次に、[ブレークポイント]> [ブレークポイントの挿入]をクリックします。 1行ごとにこれを行うことができます。私はあなたが探しているものだと思う。

+0

あなたは私の質問を誤解しているようでした。私はブレークポイントのセットを求めたい – onmyway133