11

我正在开发一个 C# 和 Silverlight 项目,并且每隔一段时间我就会遇到一个问题,即在调试时我的断点不再受到影响。在编辑器中,它们没有变得透明,所以我知道正确的代码已加载并正在运行。

一个例子是:

我有Value一个 getter 和 setter,它绑定到一个控件。当我在设置器中放置一个断点并Value从控件更改值时,断点没有被命中。

我知道 IIS 重置解决了这个问题,但我想知道原因。有没有其他人发现类似的行为?如果有人能够指出我可能的原因,那将不胜感激。

4

5 回答 5

9

Visual Studio 2010 中有一个选项:

  • 工具 -> 选项...
  • 调试 -> 常规
  • “跳过属性和运算符(仅限托管)”

确保未选中此项。这假设断点是一个实心红色圆圈,表示 VS 已经找到了它的调试符号。

或者,可以使用各种调试属性之一来修饰这些代码元素,DebuggerStepThroughAttributeDebuggerNonUserCodeAttributeDebuggerHiddenAttribute。这些可能会阻止调试器进入该方法,即使存在断点也是如此。

当然,如果您正在调试的代码已经过优化,它可能看起来像是缺少行。如果您尝试断点已优化的行,我不确定会发生什么。

如果断点变为空心(不是纯红色),则 Visual Studio 可能找不到代码的调试符号。

如果重置解决了问题,可能正在调试的代码和原始源文件/符号之间存在差异,有一个选项可以减少这种严格性:

  • 与上述相同的选项区域。
  • “要求源文件与原始版本完全匹配”
于 2011-08-19T14:44:06.327 回答
1

很多时候,我在使用 winforms 应用程序时都会遇到这个问题。我做的很简单,就是在清理和重建解决方案之前重新启动 VS。然后,如果没有任何效果,只需删除 bin 目录并再次重建。我做的最后一个选择是重启机器。

于 2011-08-19T14:47:35.693 回答
0

我最近遇到了这个问题。虽然我没有找到确切的原因,但一个简单的修复方法是检查应用程序是否在调试模式下运行(而不是发布)并清理/重建解决方案。

于 2011-08-19T14:44:10.110 回答
0

在试图理解为什么我自己的项目的断点在尝试在 vs2010 中运行代码时没有被命中时发现了这个问题

通过查看高级编译选项下的项目属性并将生成调试信息设置为完整来解决它。

可能值得一提的是,我通过右键单击我希望调试的函数,使用非常方便的 TestDriven.net 的“Test With -> Debugger”进入我希望调试的代码。

于 2013-10-25T03:16:39.697 回答
0

(至少)两个潜在原因:Visual Studio 选项或 ReSharper 选项

示例:如果我在某个调用中中断Console.WriteLine(myVar.myProp),并且我也在 getter 内部中断myProp,如果以下设置仍然打开,getter 内部的断点将被完全跳过。

对于 Visual Studio 选项: 在此处输入图像描述

对于 ReSharper 选项: 在此处输入图像描述

因此,请关闭这些以避免数据提示导致您的断点被跳过。

于 2018-07-17T21:08:06.973 回答