我正在开发一个使用System.Diagnostics.Debugger.Break()方法的程序,允许用户从命令行设置断点。这已经好几个星期了。但是,当我今天正在修复单元测试时,我试图从命令行使用调试开关,但它没有用。
这是我尝试过的:
快速Google搜索没有透露任何内容,.Net的API文档没有提及有关此功能无法正常执行的任何信息。所以...任何想法?
答案 0 :(得分:20)
我终于弄清楚发生了什么。出于某种原因,我的机器上发生了一些变化,因此仅仅调用Debugger.Debug已经不够了(仍然不明白改变了什么)。无论如何,我现在可以通过使用:
使调试器出现if (Debugger.IsAttached == false) Debugger.Launch();
答案 1 :(得分:2)
我正在使用debugger.launch()
方法,它突然停止工作。使用
if (Debugger.IsAttached == false) Debugger.Launch();
也没有启动调试器。我尝试重置我的视觉工作室设置,它工作正常!
答案 2 :(得分:1)
从这里提取(MSDN)以下注释:
从net_v40_long开始,运行时不再严格控制启动M:System.Diagnostics.Debugger.Break方法的调试器,而是向Windows错误报告(WER)子系统报告错误。 WER提供了许多设置来自定义问题报告体验,因此很多因素将影响WER响应错误的方式,例如操作系统版本,进程,会话,用户,计算机和域。如果在调用M:System.Diagnostics.Debugger.Break方法时遇到意外结果,请检查计算机上的WER设置。有关如何自定义WER的详细信息,请参阅WER Settingshttps://msdn.microsoft.com/library/windows/desktop/bb513638.aspx。如果您想确保无论WER设置如何启动调试器,请务必调用M:System.Diagnostics.Debugger.Launch方法。
我认为它解释了检测到的行为。
答案 3 :(得分:0)
您使用的是VS 2008 SP1吗?我在该版本的调试过程中遇到了很多问题,所有问题都由Microsoft patch解决了。
断点放入循环或中 递归函数根本没有被击中 每次迭代的过程。 通常,某些过程可能会通过 通过循环的多次迭代, 在a之前忽略断点 过程停止了。
断点被击中,但它们不是 调试多个时可见 Visual Studio中的进程 调试器。
还修复了一些其他与调试器相关的问题。