Visual Studio 拒绝忘记断点?

224

Visual Studio会记住以前调试会话中的断点,这非常好。

但是,当我在调试时通过单击清除其中一个“旧”断点时,它只是被暂时删除了。我的意思是下一次我调试时,我认为我已经删除的断点又回来了。

这真的很烦人 - 有没有设置可以让它不这样做?


26
如果你在调试器停止时将它们移除,它们将永久消失。 - dlev
2
2009年时,一个关于错误报告的问题被标记为“按设计关闭”;微软公司解释详见https://connect.microsoft.com/VisualStudio/feedback/details/476744/the-mystery-of-the-reappearing-breakpoints。 - zomf
1
如果你有VS 2015的新测试版,你可以发送一份“皱眉”。也许如果我们都这样做,他们会倾听。 - jsuddsjr
连接的URL不再有效 - 但我记得它与线程有关 - 但是无论原因如何,添加一个“永久删除断点”右键选项有多难? - Simon_Weaver
1
为什么他们不在断点上下文菜单中提供“删除 pending 断点”选项呢?这并不是什么高深的科学。 - ProgrammingLlama
显示剩余3条评论
11个回答

138

进入 Debug 菜单,然后选择 Delete All Breakpoints,快捷键为 Ctrl+Shift+F9


39
请尝试选择“调试”工具栏中的“断点”工具项,这将打开“断点”窗口。您可以在此窗口中查看应用程序中的所有断点。在此处,您可以通过单击“断点”窗格上工具栏中的“删除”按钮来选择和清除断点。 - jams
精简版中没有菜单项,但是热键功能非常棒。 - fun_vit
20
我只想移除一个断点而非全部,但我做不到。 - andrew.fox
2
这并不总是解决问题的方法。我已经使用过它,但断点仍然会出现。它出现在一个非常烦人的位置,我必须按继续按钮50多次才能继续执行下去。 - Dinerdo
1
@Dinerdo,你可以尝试禁用它或添加一个永远不为真的条件,而不是删除它。 - Tom Blodget
你会相信在11年和多个版本增量之后,这仍然是一个问题吗? - JHM

15

问题在于您的断点的子断点仍然存在。在调试会话期间设置断点时,某些情况下会创建子断点。

删除断点(包括子节点)的可靠方法是手动在断点窗口中查找它,并从那里删除它。(选择条目的顶部节点,按Delete键。)

如果您正在运行支持VBScript宏的(旧版本)Visual Studio,则可以在调试会话之间运行此处发布的宏,以删除子断点。这将使通过单击标志来删除断点更加有效和可预测,但它仍然存在问题和笨拙。


12

我曾经苦苦寻找“断点窗口”。这是快速打开它的方法-ctrl+alt+B

图片描述信息


或者你可以手动进入“调试->窗口->断点”来打开它。

图片描述信息


或者你可以一次性按下ctrl+shift+F9来删除所有断点!


禁用它们对我没有起作用,我不得不右键单击并彻底删除它们。 - Morné

11

这里有一些答案,但我认为所提出的操作在调试时会分散注意力(我不想失去专注力)。

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

在调试过程中,禁用断点而不是删除它。

禁用断点的可能方式:

  • 将光标悬停在上面并点击两个循环图标;
  • 或使用上下文菜单;
  • 或键盘快捷键CTRL + F9(不是Shift + CTRL + F9,因为它会清除所有断点)。

以后,在开发过程中,我会在看到禁用的断点时将其删除。

PS。定期删除所有断点也是一个好的做法。


1
如果禁用功能可行,我不明白为什么上述文章中所描述的“绑定断点”与“挂起断点”(关于设计上的关闭)会成为一个无法克服的问题。 - ItsAllABadJoke

3
  • 在调试会话开始时只打开最少数量的文件,随着您进行调试,不需要的断点将显示出来,包含它们的文件将在新标签页中打开。
  • 终止调试会话并打开断点窗口(从调试工具栏中打开,由于某种原因它不在视图菜单中)。
  • 对于每个文件,在断点窗口的搜索区域输入文件名并按Enter键,以按文件过滤出断点。
  • 然后您可以单击窗口中的每个断点,查看它们在代码中的位置,并在需要时删除它们。这有点繁琐,但这是我发现摆脱那些不需要的幽灵断点的最佳方法...书签和断点管理...这些功能可能是在上个世纪最后一次增强的...

1

大多数断点都可以在调试会话期间删除,但有些却被卡住了(可能是Visual Studio中的一个错误)。

如果您只想删除卡住的断点,请使用“断点”窗口,该窗口位于调试菜单中。您可能会发现同一行存在多个断点。只需右键单击并删除即可。


0

对于这个老问题,我突然想到了一个快速的替代答案,适用于Visual Studio 2017。

如果可能的话,只需将带有断点的代码剪切并粘贴即可。剪切后断点会消失。


0

进入调试 > 窗口 > 断点,找到断点并从窗格中删除它们。

正如此处所回答的那样


0

我认为这是一种设计缺陷,这非常令人沮丧,而且我们已经忍受了很长时间。我们经常遇到它,以至于它变成了常态。迄今为止给出的解决方案确实只是权宜之计。

更好的解决方案是聚集起来,在Visual Studio用户反馈中投票进行改变。似乎已经有几次记录,所以我们应该选择一项进行投票支持。

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/31123351-delete-disable-break-point-while-debugging-should


-1

如果您正在调试 Web 应用程序并在 Chrome 中设置断点,则 VS Code 将遵守该断点并不允许您将其删除。换句话说,有效的断点是在 VS Code 和 Chrome 中设置的断点之和。是的,有时很容易忘记在 Chrome 中设置了断点,并且迷失在尝试从 VS Code 中删除它的过程中。


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