有关如何删除Visual Studio断点的问题

时间:2010-04-02 22:59:51

标签: visual-studio debugging breakpoints

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

如果我在要移除的断点上切换断点,则在下次重新启动应用时它会重新启动。我知道永久摆脱它的唯一方法是清除所有断点,我宁愿不做,因为我必须重置其他断点。

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

6 个答案:

答案 0 :(得分:20)

如果在调试时更改断点,则断点的状态只会暂时改变,并且它是一个多边界断点。这实际上是Visual Studio的一个功能。请参阅the last post here

如果您没有调试,并且将其删除,那么它将不会再回来。或者,正如其他人所建议的那样,您可以使用断点管理窗口永久删除它。

答案 1 :(得分:10)

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

答案 2 :(得分:3)

打开断点窗口(Debug - > Windows - > Breakpoints),选择要删除的断点,然后按删除键(或单击十字图标)。

如果使用键盘切换断点(使用键盘映射F9),有时无法正确删除断点。再次按F9将完全删除它(这是由于断点在多个线程上设置并切换它,而调试只会禁用主断点而不是其他线程的断点)。

答案 3 :(得分:1)

如果要使用F9删除断点或单击红色字形,则该断点必须是无子区域的。否则,断点将通过其幸存的子断点持续存在。 (在调试期间设置断点时可能会形成子断点。)
您可以检查此问题“Disable/remove child Breakpoints?”,以便宏删除子断点。我认为你不应该在Debug会话期间调用宏,因为这可能导致你的断点没有被击中。

答案 4 :(得分: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

您可以为其指定键盘快捷键以便于访问。 (工具&gt;选项&gt;环境&gt;键盘。)

答案 5 :(得分:0)

  

来自https://stackoverflow.com/a/35935390/257470的交叉帖子,但在这里更具相关性。

这里有一些答案,但在我看来,建议的操作在调试过程中使用起来很分散(我不想失去我的注意力)。

我在断点期间使用粘性断点的流程如下:

在调试期间,禁用断点而不是删除断点。

禁用断点的可能方法:

  • 使用光标悬停并单击两个循环图标;
  • 或使用上下文菜单;
  • 或键盘快捷键CTRL + F9。

稍后,在开发过程中,当我看到一个断点时,我会删除一个禁用的断点。

PS。偶尔删除所有断点也是一种很好的做法。