クラスに40から50のメソッドがあります。それらすべてにブレークポイントを追加したいと思います。それらすべてにブレークポイントを一度に追加できますか?
ここで説明されているアドオンなしのメソッドがあります。 Visual StudioデバッガーのC++クラスにブレークポイントを設定する方法
つまり、CTRL + Bを押して「新しいブレークポイント」ダイアログを表示し、関数フィールドに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 expression を使用して __debugbreak()
を追加できます各メソッドの開始。
何らかの理由で、受け入れられた回答がうまくいきませんでした。また、私の回避策はVisual Studio 2010には適用されないと思います。しかし、これを行うために、Visual Studio 2015で Macros for Visual Studio 拡張を使用しました。
手順:
{
を追加します。\r\n
を付加して、ネストされた中括弧と一致しないことを確認します。これは\r\n {
のようになります。また、正規表現検索をオンにします(検索ダイアログで*
を押します)。混乱があることを知らせてください。
Vim(vsvim)を使用すると、かなり簡単にブレークポイントを操作できます。下記は用例です。
すべての行で改行:{Escape} qq:vsc Debug.ToggleBreakpoint{Enter}jq100@q
すべてのメソッドで中断:
{Escape} qq:vsc Edit.NextMethod {Enter}:vsc Debug.ToggleBreakpoint{Enter}jq100@q
100を適切な行数/メソッド数に置き換えます。