我正在开发一个 C# 和 Silverlight 项目,并且每隔一段时间我就会遇到一个问题,即在调试时我的断点不再受到影响。在编辑器中,它们没有变得透明,所以我知道正确的代码已加载并正在运行。
一个例子是:
我有Value
一个 getter 和 setter,它绑定到一个控件。当我在设置器中放置一个断点并Value
从控件更改值时,断点没有被命中。
我知道 IIS 重置解决了这个问题,但我想知道原因。有没有其他人发现类似的行为?如果有人能够指出我可能的原因,那将不胜感激。
我正在开发一个 C# 和 Silverlight 项目,并且每隔一段时间我就会遇到一个问题,即在调试时我的断点不再受到影响。在编辑器中,它们没有变得透明,所以我知道正确的代码已加载并正在运行。
一个例子是:
我有Value
一个 getter 和 setter,它绑定到一个控件。当我在设置器中放置一个断点并Value
从控件更改值时,断点没有被命中。
我知道 IIS 重置解决了这个问题,但我想知道原因。有没有其他人发现类似的行为?如果有人能够指出我可能的原因,那将不胜感激。
Visual Studio 2010 中有一个选项:
确保未选中此项。这假设断点是一个实心红色圆圈,表示 VS 已经找到了它的调试符号。
或者,可以使用各种调试属性之一来修饰这些代码元素,DebuggerStepThroughAttribute
即DebuggerNonUserCodeAttribute
和DebuggerHiddenAttribute
。这些可能会阻止调试器进入该方法,即使存在断点也是如此。
当然,如果您正在调试的代码已经过优化,它可能看起来像是缺少行。如果您尝试断点已优化的行,我不确定会发生什么。
如果断点变为空心(不是纯红色),则 Visual Studio 可能找不到代码的调试符号。
如果重置解决了问题,可能正在调试的代码和原始源文件/符号之间存在差异,有一个选项可以减少这种严格性:
很多时候,我在使用 winforms 应用程序时都会遇到这个问题。我做的很简单,就是在清理和重建解决方案之前重新启动 VS。然后,如果没有任何效果,只需删除 bin 目录并再次重建。我做的最后一个选择是重启机器。
我最近遇到了这个问题。虽然我没有找到确切的原因,但一个简单的修复方法是检查应用程序是否在调试模式下运行(而不是发布)并清理/重建解决方案。
在试图理解为什么我自己的项目的断点在尝试在 vs2010 中运行代码时没有被命中时发现了这个问题
通过查看高级编译选项下的项目属性并将生成调试信息设置为完整来解决它。
可能值得一提的是,我通过右键单击我希望调试的函数,使用非常方便的 TestDriven.net 的“Test With -> Debugger”进入我希望调试的代码。