Могу ли я установить точки останова для всех методов в классе одновременно в Visual Studio?

   <script type="text/javascript"> // if site open in iframe then redirect to main site
        $(function(){
             if(window.top.location != window.self.location)
             {
                top.window.location.href = window.self.location;
             }
        });
    </script>
28
задан user2771704 14 July 2014 в 09:08
поделиться

2 ответа

Вот ваш макрос, но для установки точек останова на 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
5
ответ дан alexkovelsky 14 July 2014 в 09:08
поделиться
1113 Принятый ответ почему-то не работает для меня. И я не думаю, что мой обходной путь применим к Visual Studio 2010. Но я использовал расширение для макросов для Visual Studio с моей Visual Studio 2015, чтобы сделать это.

Шаги:

  1. Найти ( Ctrl + F ) правый отступ для открывающей скобки методов. Обычно это 8 пробелов (или 2 вкладки и т. Д. В зависимости от настроек, которые вы, возможно, сделали).
  2. Добавьте это с помощью открывающей скобки {.
  3. Добавьте это к \r\n, чтобы убедиться, что оно не соответствует вложенным скобкам. Теперь это может выглядеть как \r\n {. Также включите поиск по регулярному выражению (нажав клавишу * в диалоговом окне поиска).
  4. Начните запись макроса.
  5. Нажмите F3 , а затем нажмите F9 , чтобы добавить точку останова. Это добавляет точку останова к первому методу, найденному с помощью трюка.
  6. Остановите запись макроса. Сыграйте за тот номер метода, который у вас есть.
  7. Внимание: будьте внимательны, когда дойдете до конца. В противном случае он начнется снова сверху и начнется удаление только что добавленных точек останова.

Дайте мне знать, что есть какая-то путаница.

1
ответ дан Nikhil Girraj 14 July 2014 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: