如何移除 Visual Studio 中的断点?

27

假设我有10个断点,但只想清除其中一个而不是其他9个。

如果我关闭该断点,则在下次启动应用程序时它会重新出现。目前我所知的唯一永久性移除此断点的方法是清除所有断点,但我并不想这样做,因为我需要重新设置其他9个断点。

在任何版本的VS中有更好的方法吗?

6个回答

19

如果您正在调试且断点是多绑定的,则在更改它时,该断点的状态只会暂时更改。这实际上是Visual Studio的一个功能。请参见此处的最后一篇帖子

如果您未进行调试并删除该断点,则不会再出现。或者,正如其他人建议的那样,可以使用断点管理窗口永久删除它。


1
我一直都能够在调试时删除断点。当断点有子断点(即您在重载函数上设置了断点)时,它的状态会暂时改变,因此有时无法删除它。请参见http://msdn.microsoft.com/en-us/library/02ckd1z7(VS.71).aspx#vctskbreakpointswindowchildbreakpoints。 - adrianbanks
2
“如果你在调试过程中更改断点,那么断点的状态只会暂时改变。这实际上是Visual Studio的一个功能。”您能证实这一点吗?在我使用VS多年的过程中,我从未注意到这一点。我发现,当VS拒绝删除我的断点时,原因是.user文件损坏了。 - slugster
http://connect.microsoft.com/VisualStudio/feedback/details/391642/permanently-remove-a-breakpoint-in-visual-studio-during-debugging - 虽然Adrian是对的,但这只适用于多重绑定断点。 - womp
3
“bound in multiple locations” 的意思是该类或库在多个位置被调用或引用,可能是在两个不同的项目中都调用了这个类或库。 - Simon_Weaver

11
按下 Ctrl+Alt+B 将会弹出您解决方案中所有断点的列表,您可以通过右键手动切换或删除它们。

4
打开断点窗口(调试 -> 窗口 -> 断点),选择要删除的断点,然后按删除键(或点击叉号图标)即可删除。
如果您正在使用键盘切换断点(我的键盘映射使用F9),有时它无法正确删除。再次按下F9将完全删除它(这是由于在多个线程上设置断点,而在调试时切换它只会禁用主断点,但不会禁用其他线程的断点)。

1

如果您想使用 F9 快捷键或点击红色符号来删除断点,则该断点必须是无子级的。否则,该断点将通过其生存的子断点保留。(当您在调试期间设置断点时,可能会形成子断点。)
您可以查看这个问题 "禁用/删除子断点?" ,获取一个用于删除子断点的宏。我认为您不应该在调试会话期间调用该宏,因为这可能导致无法触发您的断点。


0

以下代码可用作宏,以删除当前选定行上的断点。(请注意,当断点被命中时,Visual Studio会自动选择该行。)

Sub RemoveBreakPoint()
    Dim debugger As EnvDTE.Debugger = DTE.Debugger
    Dim children As EnvDTE.Breakpoints
    Dim sel As Integer = DTE.ActiveDocument.Selection.ActivePoint.Line
    For Each bp As EnvDTE.Breakpoint In debugger.Breakpoints
        If bp.File <> DTE.ActiveDocument.FullName Then
            Continue For
        End If
        For Each bpc As EnvDTE.Breakpoint In bp.Children
            If bpc.FileLine = sel Then
                bp.Delete()
                Exit For
            End If
        Next
    Next
End Sub

您可以为其分配一个键盘快捷方式以便于访问。(工具 > 选项 > 环境 > 键盘。)


0
这是从 https://dev59.com/j2025IYBdhLWcg3weF6S#35935390 转载过来的,但在这里更加相关。
虽然这里有一些答案,但在我的看法中,提出的操作方式会分散注意力,不利于调试(我不想失去专注力)。
我在断点期间使用“粘性断点”的流程如下:
在调试期间,禁用断点而不是删除它。
禁用断点的几种可能方法:
- 手指悬停并点击两个周期图标; - 或使用上下文菜单; - 或使用键盘快捷键CTRL+F9。
稍后,在开发期间,我发现有失效的断点时再将其删除。
顺便说一句,定期清除所有断点也是一个好习惯。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接