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