5

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以降が推奨されます)、またはアドインはありますか?

4

2 に答える 2

2

この機能は、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
于 2013-04-30T12:04:20.450 に答える
0

線の始点をクリックできます。次に、[ブレークポイント] > [ブレークポイントの挿入] をクリックします。これをすべての行に対して行うことができます。それがあなたが探しているものだと思います。

于 2013-04-02T16:20:53.703 に答える