我在一個類中有40-50個方法,我想爲它們添加斷點。我可以一次將斷點添加到所有這些斷點嗎?我可以在Visual Studio中一次爲類中的所有方法設置斷點嗎?
回答
這裏有描述一個插件無方法: How to set a breakpoint on a C++ class in the Visual Studio Debugger
總之,你可以通過按CTRL + B和類型ClassName::*
的功能領域,彈出「新建斷點」對話框。 然後,您可以在斷點窗口中禁用它們中的一些。
有一個class breakpoint add-in你可以嘗試,或者你可以使用replace expression在每個方法的開始添加一個__debugbreak()
。
這是您的宏,但需要一段時間才能在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
爲了讓這個腳本能夠在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
由於某種原因,接受的答案對我無效。我不認爲我的解決方法適用於Visual Studio 2010.但是,我使用了我的Visual Studio 2015中的Macros for Visual Studio擴展來執行此操作。
步驟:
- 查找(按Ctrl +˚F)的方法左括號的右縮進。通常情況下,這是8個空格(或2個標籤等,根據您可能已經做出的設置)。
- 附加此開頭大括號
{
。 - 用
\r\n
作爲前綴,以確保它不匹配任何嵌套的大括號。現在它可能看起來像\r\n {
。另外,打開正則表達式搜索(通過在搜索對話框中按*
)。 - 開始錄製宏。
- 按F3然後按F9添加斷點。這爲使用技巧找到的第一個方法添加了一個斷點。
- 停止錄製宏。玩它的方法你可能有多少。
- 小心:當你到達最後時要注意。否則,它將從頂部重新開始,並開始刪除剛剛添加的斷點。
讓我知道它有任何混淆。
- 1. 有什麼辦法可以在類的所有方法上設置斷點?
- 2. Visual Studio 2008 - 有沒有一種方法來設置訪問類時的斷點?
- 3. 如何在Visual Studio中爲c#文件中的所有行設置斷點?
- 4. 我可以在我的代碼中爲所有類的構造函數設置斷點嗎?
- 5. 在Visual Studio中,我可以在斷點處繪製我的變量嗎?
- 6. 可以爲EXC_BAD_ACCESS設置斷點嗎?
- 7. 我可以在包含的代碼中設置斷點嗎?
- 8. 如何在Visual Studio中的所有書籤位置設置斷點?
- 9. 我可以在Visual Studio中更改Web站點的警告設置嗎?
- 10. 無法在Visual Studio 2005的右括號中設置斷點
- 11. 我可以在Cocoa框架代碼中設置斷點嗎?
- 12. 我可以在ntdll.dll!_LdrpInitializeProcess中設置斷點嗎?
- 13. 我可以在jsFiddle中設置Firebug斷點嗎?
- 14. 我可以在斷點中重寫方法的返回值嗎?
- 15. 我可以像Visual Studio一樣設置Intellij IDE的環境嗎?
- 16. 我可以爲Visual Studio中的解決方案設置一般major.minor.release
- 17. 我可以顯示我在PHP中設置的所有Cookie嗎?
- 18. 清除Visual Studio解決方案中的所有斷點
- 19. 我可以在Visual Studio中將「編輯並繼續」= true設置爲所有新Web項目的默認值嗎?
- 20. 是否可以在Eclipse中使用java.lang.Thread.run方法設置斷點?
- 21. 如何在Visual Studio 2010中的cshtml文件中設置斷點?
- 22. 如何自動設置XCode中所有方法的斷點?
- 23. 向EclipseIDE中的類的所有方法添加方法斷點
- 24. 使用Visual Studio進行遠程調試時可以設置斷點嗎?
- 25. 我可以在更改的值上設置斷點嗎?
- 26. 無法在DomainService類中設置斷點
- 27. 斷點在Visual Studio中沒有觸及
- 28. Visual Studio 08:設置文件級斷點?
- 29. 在Visual Studio 2008中設置JavaScript斷點的問題
- 30. Visual Studio中C++的斷點
您能否詳細解答您的答案的第二部分? – goamn 2014-05-19 03:48:20