【发布时间】:2010-04-02 22:59:51
【问题描述】:
假设我有 10 个断点,我想清除其中一个,但不想清除另外 9 个。
如果我在要删除的断点上切换断点,它会在我下次重新启动应用程序时复活。我知道永久摆脱它的唯一方法是清除所有断点,我宁愿不这样做,因为我必须重置其他 9 个。
在任何 VS 版本中有更好的方法吗?
【问题讨论】:
标签: visual-studio debugging breakpoints
假设我有 10 个断点,我想清除其中一个,但不想清除另外 9 个。
如果我在要删除的断点上切换断点,它会在我下次重新启动应用程序时复活。我知道永久摆脱它的唯一方法是清除所有断点,我宁愿不这样做,因为我必须重置其他 9 个。
在任何 VS 版本中有更好的方法吗?
【问题讨论】:
标签: visual-studio debugging breakpoints
如果您在调试时更改断点的状态并且它是一个多边界断点,那么它的状态只会暂时改变。这实际上是 Visual Studio 的一个特性。见the last post here。
如果您没有进行调试,并且将其删除,那么它就不会再回来了。或者,正如其他人所建议的那样,您可以使用断点管理窗口将其永久删除。
【讨论】:
点击 Ctrl+Alt+B 将显示解决方案中所有断点的列表,您可以从中手动切换或右键单击删除它们。
【讨论】:
打开断点窗口(Debug -> Windows -> Breakpoints),选择要删除的断点并按下delete键(或点击十字图标)。
如果您使用键盘切换断点(F9 使用我的键盘映射),它有时无法正确删除它。再次按 F9 将完全删除它(这是由于在多个线程上设置了断点并在调试时切换它只会禁用主断点,但不会禁用其他线程的断点)。
【讨论】:
如果您想使用 F9 或单击红色字形删除断点,则该断点必须是无子断点。否则,断点将通过其幸存的子断点持续存在。 (在调试期间设置断点时会形成子断点。)
您可以检查这个问题“Disable/remove child Breakpoints?”,以获取删除子断点的宏。我认为你不应该在调试会话期间调用宏,因为这可能会导致你的断点不被命中。
【讨论】:
下面的代码可以用作宏来删除当前选定行上的断点。 (请注意,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
您可以为其分配键盘快捷键以便于访问。 (工具 > 选项 > 环境 > 键盘。)
【讨论】:
来自https://stackoverflow.com/a/35935390/257470 的交叉帖子,但在这里更相关。
这里有一些答案,但我认为建议的操作在调试期间使用会分散注意力(我不想失去注意力)。
我在断点期间粘断点的流程如下:
在调试期间,禁用断点而不是删除它。
禁用断点的可能方法:
后来,在开发过程中,当我看到一个禁用的断点时,我删除了它。
附言。偶尔删除所有断点也是一个好习惯。
【讨论】: