У меня есть 40-50 методов в классе, я хочу добавить точки останова для всех них. Могу ли я добавить точки останова для всех сразу?
Могу ли я установить точки останова для всех методов в классе сразу в Visual Studio?
Ответ 1
Существует метод без аддона, описанный здесь: Как установить точку останова на С++-классе в отладчике Visual Studio
Короче говоря, вы можете открыть диалог "Новая точка останова", нажав CTRL + B и введите ClassName::*
в поле функции.
Затем вы можете отключить некоторые из них в окне точек останова.
Ответ 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
Ответ 3
Там есть надстройка надстройки точки надстройки, или вы можете использовать заменить выражение, чтобы добавить __debugbreak()
в начале каждого метода.
Ответ 4
Принятый ответ почему-то не работал у меня. И я не думаю, что мое обходное решение относится к Visual Studio 2010. Но я использовал расширение Макросы для Visual Studio с моей Visual Studio 2015, чтобы сделать это.
Шаги:
- Найти (Ctrl + F) правый отступ для открытия скобки методов. Обычно это 8 белых пробелов (или 2 вкладки и т.д. На основе настроек, которые вы могли бы сделать).
- Добавьте это с помощью открытой скобки
{
. - Подготовьте это с помощью
\r\n
, чтобы убедиться, что он не соответствует вложенным скобкам. Теперь это может выглядеть как\r\n {
. Кроме того, включите поиск регулярных выражений (нажав*
в диалоговом окне поиска). - Начните запись макроса.
- Нажмите F3, а затем нажмите F9, чтобы добавить точку останова. Это добавляет точку останова к первому найденному методу с помощью трюка.
- Остановить запись макроса. Воспроизведите его для количества методов, которые у вас могут быть.
- Внимание: будьте в курсе, когда вы достигнете конца. В противном случае он начнется снова с вершины и начнет удалять оставшиеся точки останова.
Позвольте мне знать, что есть какая-то путаница.