【问题标题】:Question on how to remove a Visual Studio Breakpoint关于如何删除 Visual Studio 断点的问题
【发布时间】:2010-04-02 22:59:51
【问题描述】:

假设我有 10 个断点,我想清除其中一个,但不想清除另外 9 个。

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

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

【问题讨论】:

    标签: visual-studio debugging breakpoints


    【解决方案1】:

    如果您在调试时更改断点的状态并且它是一个多边界断点,那么它的状态只会暂时改变。这实际上是 Visual Studio 的一个特性。见the last post here

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

    【讨论】:

    • 我一直能够在调试时删除断点。它没有被删除的时间(即它的状态暂时改变)是断点有子断点的时候(即你在重载函数上设置了一个断点)。见msdn.microsoft.com/en-us/library/…
    • “只有在调试时更改断点的状态才会暂时改变。这实际上是 Visual Studio 的一个特性。” 你能证实这一点吗?这不是我多年来使用 VS 时从未注意到的事情。我发现当 VS 拒绝删除我的断点时,这是因为 .user 文件损坏。
    • connect.microsoft.com/VisualStudio/feedback/details/391642/… - 虽然阿德里安是对的,但它只适用于多边界断点。
    • '绑定在多个位置' - 这到底是什么意思???两个不同的项目调用一个库类或类似的东西?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          下面的代码可以用作宏来删除当前选定行上的断点。 (请注意,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
          

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

          【讨论】:

            【解决方案6】:

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

            这里有一些答案,但我认为建议的操作在调试期间使用会分散注意力(我不想失去注意力)。

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

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

            禁用断点的可能方法:

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

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

            附言。偶尔删除所有断点也是一个好习惯。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-11-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-09-10
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多