クラスに40〜50のメソッドがあり、それらすべてにブレークポイントを追加したいと思います。それらすべてに一度にブレークポイントを追加できますか?
6 に答える
ここで説明するアドオンのないメソッドがあります:VisualStudioDebugger でC++クラスにブレークポイントを設定する方法
つまり、Ctrl + K、Bを押しClassName::*
て関数フィールドに入力すると、[新しいブレークポイント]ダイアログが表示されます。Visual Studio 2017では、のように、フィールドに名前空間を含める必要がありますNamespaceName::ClassName::*
。次に、ブレークポイントウィンドウでそれらの一部を無効にできます。
これがマクロですが、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
試すことができるクラスブレークポイントアドインがあります。または、 replace式__debugbreak()
を使用して、各メソッドの先頭にを追加することもできます。
受け入れられた答えは、何らかの理由で私にはうまくいきませんでした。そして、私の回避策はVisual Studio 2010には当てはまらないと思います。しかし、これを行うために、 VisualStudio2015でMacrosforVisualStudio拡張機能を使用しました。
手順:
- メソッドの開始中括弧の正しいインデントを見つけます(Ctrl+ )。F通常、これは8つの空白(または設定に基づいて2つのタブなど)です。
- これにオープニングブレースを追加し
{
ます。 - これを前に付け
\r\n
て、ネストされた中括弧と一致しないようにします。今ではのように見えるかもしれません\r\n {
。*
また、(検索ダイアログでを押して)正規表現検索をオンにします。 - マクロの記録を開始します。
- を押しF3てから、を押しF9てブレークポイントを追加します。これにより、トリックを使用して最初に見つかったメソッドにブレークポイントが追加されます。
- マクロの記録を停止します。あなたが持っているかもしれない方法の数のためにそれを演奏してください。
- 注意:最後に到達したときに注意してください。それ以外の場合は、上から再開し、追加したブレークポイントの削除を開始します。
混乱があることを教えてください。
vim(vsvim)を使用すると、ブレークポイントをかなり簡単に操作できます。下記は用例です。
すべての行でブレーク:{Escape} qq:vsc Debug.ToggleBreakpoint {Enter} jq100 @ q
すべての方法を破る:
{Escape} qq:vsc Edit.NextMethod {Enter}:vsc Debug.ToggleBreakpoint {Enter} jq100 @ q
100を適切な数の行/メソッドに置き換えます。
[デバッグ]タブをクリックして、[すべてデバッグ]を選択します。次に、デバッグするメソッド/コントローラー/関数を呼び出し、デバッガーを使用してステップスルーします(ブレークポイントが設定されていない限り、続行しないでください)。