我的C#调试器无法正常工作,有时会跳过断点和部分代码行。我已检查了配置管理器,甚至尝试将我的项目添加到新的解决方案文件中。请问有人可以帮我吗?
我的调试清单:
在某些情况下,您可能会发现在附加调试器时没有加载您的模块(例如,如果您具有某种插件体系结构,并且只有在首次使用插件程序集时才会加载插件程序集)。 在这些情况下,您只能尝试确保一切准备就绪,以便在加载模块时使用调试器。
确保优化功能已禁用(这是调试配置的默认设置,但在发布配置中启用)。编译器优化可能会干扰调试器...
你确定编译成功了吗?听起来像是你正在调试之前的版本,这可能是由于构建失败(可能是代码错误,也可能是文件只读)导致的。
如果整个方法都被跳过了,查看源代码是否存在System.Diagnostics.DebuggerStepThroughAttribute属性。
尽管名称如此,但它会防止调试器逐步执行该方法。
xsd.exe
用这个属性装饰了它生成的代码。在F5之前创建的断点有时会被触发,但新的断点并不总是会被触发。 - ajeh这对我在VS 2017中有效,进入工具 > 选项,然后在选项窗口下,转到调试部分。启用 - "启用.NET Framework源代码步进"
Count()
将评估该属性 - 因此还需从监视窗口中删除所有属性引用等。同时确保您要调试的代码在与主可执行文件相同的进程中运行。我浪费了半个小时才弄清楚这一点-断点没有被触发,因为感兴趣的代码已经在子进程中启动,而不是直接调用(所涉及的程序有两种不同的操作模式)。
这听起来像是您的源代码与PDB文件不同步。最简单的解决方法是清理解决方案(删除bin文件夹中的所有dll)。重新编译,然后尝试再次调试。
如果仍然失败,请尝试关闭解决方案并删除“obj”文件夹。然后再试一次。
还要检查是否在调试模式下编译 - 这是我经常遇到的问题(“为什么它不能逐步执行?!”)未获取断点。
对我来说,禁用“项目属性/构建/优化代码”起作用了。