假设我有10个断点,我想清除一个但不是其他9个。
如果我在要移除的断点上切换断点,则在下次重新启动应用时它会重新启动。我知道永久摆脱它的唯一方法是清除所有断点,我宁愿不做,因为我必须重置其他断点。
在任何VS版本中有更好的方法吗?
答案 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的交叉帖子,但在这里更具相关性。
这里有一些答案,但在我看来,建议的操作在调试过程中使用起来很分散(我不想失去我的注意力)。
我在断点期间使用粘性断点的流程如下:
在调试期间,禁用断点而不是删除断点。
禁用断点的可能方法:
稍后,在开发过程中,当我看到一个断点时,我会删除一个禁用的断点。
PS。偶尔删除所有断点也是一种很好的做法。