【问题标题】:Breakpoints being moved Visual Studio 2010正在移动的断点 Visual Studio 2010
【发布时间】:2014-11-26 20:05:27
【问题描述】:

我在调试 C#/.Net 程序时使用断点。我经常使用许多“当命中”断点在“输出”窗口中显示消息并继续运行,这样我就可以检查程序在执行时正在做什么。

但我经常发现,在编辑代码后,我的断点被移动,产生虚假或不正确的结果,我不得不去删除我的旧断点并创建新断点。

在 Stack Overflow 上搜索此内容时,我发现其他程序员在以发布模式构建时遇到此问题,但我正在使用调试配置进行构建。

如何让我的断点保持不变?

【问题讨论】:

  • 当然,这是不可避免的。使用 Trace.WriteLine() 当然是更好的方法。
  • Trace.WriteLine() 需要对代码进行更改。在调试器中使用此功能不会,此外,知道如何阻止 Visual Studio 在任何情况下移动我的断点会很有用。
  • 您对导致此行为的代码进行了哪些特定编辑?
  • 导致它的编辑不遵循任何模式。有时我添加或注释掉代码并且断点被移动,有时它不会被移动。另外,我最近在一个方法中注释掉了一些代码。在我放置 cmets 的位置之外,该方法中设置了两个断点。其中一个断点移动了,另一个没有!那么问题就变得简单了:当我在“这里”设置断点时,“这里”对于 Visual Studio 到底意味着什么?
  • 您可以在进行更改之前尝试导出断点(在 xml 文件中),然后再次导入它(不确定断点是否移位)msdn.microsoft.com/en-us/library/vstudio/…

标签: c# visual-studio-2010 visual-studio visual-studio-debugging


【解决方案1】:
  • 您是否与项目的其他开发人员“共享”诸如 .csproj.user、.suo... 之类的文件?

如果您使用的是 SCM,请将它们排除在外,这些文件不打算在不同机器之间共享。将它们发送给其他来源略有不同的用户可能会导致这种有趣的混乱。

有关这些文件的更多详细信息,请点击此处: Best practices for Subversion and Visual Studio projects

  • 如果您在 VS 之外(例如使用 Notepad++)手动编辑文件,也可能发生这种情况:当您想在正确的位置保留断点时,请尽量避免这种情况,VS 根本不喜欢它。

【讨论】:

  • 谢谢。我添加了另一个案例,它也可以解释 OP 问题。
  • 如果没有其他原因,它们应该被排除在外,并且每次打开程序时都会更改。没有任何价值来控制它们的修订。
  • 我不与其他开发人员共享此代码。我不在 Visual Studio 之外编辑代码。
  • 思考这个问题的一种方式是:当我在“这里”设置断点时,在这个位置,“这里”对 Visual Studio 意味着什么?是否连接到源代码;它是否连接到较低级别的东西,比如在 CLI 中? Visual Studio 将该断点锚定到什么位置?它是否因 Vidual Studio 或 .Net 框架的不同版本而异?
  • 存储在SUO文件中。我认为它与 # 行有关(可以通过在 VS 之外编辑文件来轻松检查:尝试移动 BP 之前的行/更改包含 BP 的行的内容,然后告诉我们会发生什么!)。对于您的问题,您是否尝试过删除 SUO 文件?它可能会有所帮助(您也会丢失一些工作区设置,但没有什么很烦人的)。另外,请检查您的“换行符”字符是否一致,\n / \r / \r\n 的混合可能会导致奇怪的事情。
【解决方案2】:

有很多方法可以检查程序的执行。确保您正在为您的项目生成完整的调试信息。还要检查 csproj.user、.suo 文件是否未设置为只读。

如果这些东西不起作用,对于您的情况,我建议您使用一些基于控制台的输出提供方法。

试试这个

Console.WriteLine("Currently executing this...");

这里的控制台是VS的输出窗口。从“显示输出:”中选择调试。

如果要停止执行,请使用此代码

Console.WriteLine("Currently executing this...");
System.Diagnostics.Debugger.Break();

您应该对代码进行条件编译,以免最终产品发布。 Console.WriteLine() 不会造成任何问题,但System.Diagnostics.Debugger.Break() 会破坏应用程序。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2011-05-26
    • 1970-01-01
    • 2012-08-18
    • 2015-11-28
    相关资源
    最近更新 更多