2012-07-24 52 views

回答

4

這是您的宏,但需要一段時間才能在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 
+1

爲了讓這個腳本能夠在VS 2012中工作,你可以將函數複製到一個新的Addin項目中,並在Addin項目的「OnConnection」方法內調用「BreakAtEveryFunction」。該腳本有點太全面,因爲它的.NET方法,也有錯誤,Addin項目會抱怨「DTE.Debugger」和「DTE.Solution.Projects」,將「DTE」更改爲「_applicationObject」 。 有關Addin項目的更多信息,請參見[本答案。](http://stackoverflow.com/questions/12027485/alternative-to-macros-in-visual-studio-2012/12394986#12394986) – goamn 2014-05-19 21:28:35

1

由於某種原因,接受的答案對我無效。我不認爲我的解決方法適用於Visual Studio 2010.但是,我使用了我的Visual Studio 2015中的Macros for Visual Studio擴展來執行此操作。

步驟:

  1. 查找(按Ctrl +˚F)的方法左括號的右縮進。通常情況下,這是8個空格(或2個標籤等,根據您可能已經做出的設置)。
  2. 附加此開頭大括號{
  3. \r\n作爲前綴,以確保它不匹配任何嵌套的大括號。現在它可能看起來像\r\n {。另外,打開正則表達式搜索(通過在搜索對話框中按*)。
  4. 開始錄製宏。
  5. F3然後按F9添加斷點。這爲使用技巧找到的第一個方法添加了一個斷點。
  6. 停止錄製宏。玩它的方法你可能有多少。
  7. 小心:當你到達最後時要注意。否則,它將從頂部重新開始,並開始刪除剛剛添加的斷點。

讓我知道它有任何混淆。

相關問題