この機能は、Visual Studio 2010 および 2012 のブレークポイント ウィンドウで使用できます。
http://msdn.microsoft.com/en-us/library/dd293674.aspx
(c) Visual Studio チーム (製品チーム、Microsoft) 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