42

クラスに40〜50のメソッドがあり、それらすべてにブレークポイントを追加したいと思います。それらすべてに一度にブレークポイントを追加できますか?

4

6 に答える 6

24

ここで説明するアドオンのないメソッドがあります:VisualStudioDebugger でC++クラスにブレークポイントを設定する方法

つまり、Ctrl + K、Bを押しClassName::*て関数フィールドに入力すると、[新しいブレークポイント]ダイアログが表示されます。Visual Studio 2017では、のように、フィールドに名前空間を含める必要がありますNamespaceName::ClassName::*。次に、ブレークポイントウィンドウでそれらの一部を無効にできます。

于 2013-02-22T14:55:51.513 に答える
5

これがマクロですが、1000以上の関数にブレークポイントを設定するには時間がかかります...そしてVisual Studioの速度が低下します!

Sub BreakAtEveryFunction()
    For Each project In DTE.Solution.Projects
        SetBreakpointOnEveryFunction(project)
    Next project
End Sub


' Macro editor
Sub SetBreakpointOnEveryFunction(ByVal project As Project)
    Dim cm = project.CodeModel

    ' Look for all the namespaces and classes in the 
    ' project.
    Dim list As List(Of CodeFunction)
    list = New List(Of CodeFunction)
    Dim ce As CodeElement
    For Each ce In cm.CodeElements
        If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then
            ' Determine whether that namespace or class 
            ' contains other classes.
            GetClass(ce, list)
        End If
    Next

    For Each cf As CodeFunction In list

        DTE.Debugger.Breakpoints.Add(cf.FullName)
    Next

End Sub

Sub GetClass(ByVal ct As CodeElement, ByRef list As List(Of CodeFunction))

    ' Determine whether there are nested namespaces or classes that 
    ' might contain other classes.
    Dim aspace As CodeNamespace
    Dim ce As CodeElement
    Dim cn As CodeNamespace
    Dim cc As CodeClass
    Dim elements As CodeElements
    If (TypeOf ct Is CodeNamespace) Then
        cn = CType(ct, CodeNamespace)
        elements = cn.Members
    Else
        cc = CType(ct, CodeClass)
        elements = cc.Members
    End If
    Try
        For Each ce In elements
            If (TypeOf ce Is CodeNamespace) Or (TypeOf ce Is CodeClass) Then
                GetClass(ce, list)
            End If
            If (TypeOf ce Is CodeFunction) Then
                list.Add(ce)
            End If
        Next
    Catch
    End Try
End Sub
于 2013-10-12T14:44:49.307 に答える
1

試すことができるクラスブレークポイントアドインがあります。または、 replace式__debugbreak()を使用して、各メソッドの先頭にを追加することもできます。

于 2012-07-24T07:58:22.883 に答える
1

受け入れられた答えは、何らかの理由で私にはうまくいきませんでした。そして、私の回避策はVisual Studio 2010には当てはまらないと思います。しかし、これを行うために、 VisualStudio2015でMacrosforVisualStudio拡張機能を使用しました。

手順:

  1. メソッドの開始中括弧の正しいインデントを見つけます(Ctrl+ )。F通常、これは8つの空白(または設定に基づいて2つのタブなど)です。
  2. これにオープニングブレースを追加し{ます。
  3. これを前に付け\r\nて、ネストされた中括弧と一致しないようにします。今ではのように見えるかもしれません\r\n {*また、(検索ダイアログでを押して)正規表現検索をオンにします。
  4. マクロの記録を開始します。
  5. を押しF3てから、を押しF9てブレークポイントを追加します。これにより、トリックを使用して最初に見つかったメソッドにブレークポイントが追加されます。
  6. マクロの記録を停止します。あなたが持っているかもしれない方法の数のためにそれを演奏してください。
  7. 注意:最後に到達したときに注意してください。それ以外の場合は、上から再開し、追加したブレークポイントの削除を開始します。

混乱があることを教えてください。

于 2016-12-07T10:07:22.797 に答える
0

vim(vsvim)を使用すると、ブレークポイントをかなり簡単に操作できます。下記は用例です。

すべての行でブレーク:{Escape} qq:vsc Debug.ToggleBreakpoint {Enter} jq100 @ q

すべての方法を破る:

{Escape} qq:vsc Edit.NextMethod {Enter}:vsc Debug.ToggleBreakpoint {Enter} jq100 @ q

100を適切な数の行/メソッドに置き換えます。

例: https ://imgur.com/SFhlEr7

于 2018-11-24T12:37:56.553 に答える
-1

[デバッグ]タブをクリックして、[すべてデバッグ]を選択します。次に、デバッグするメソッド/コントローラー/関数を呼び出し、デバッガーを使用してステップスルーします(ブレークポイントが設定されていない限り、続行しないでください)。

于 2020-04-22T17:11:18.337 に答える