我希望调试器在以下时间停止:
到目前为止没有问题,我能够让Visual Studio 2015像这样工作。但是,当在具有 DebuggerStepThrough 或 DebuggerHidden 属性的函数内发生处理异常时,调试器将停止调用此函数的位置。
我找不到办法解决这个问题。我不记得在Visual Studio 2010或2013上的这种行为。我搜索过它,并没有找到任何人询问同样的问题。
答案 0 :(得分:1)
您可以使用DebuggerNonUserCode属性而不是VS2015中的DebuggerStepThrough或DebuggerHidden属性,因为它们之间存在一些小差异:
更新
我和你的VS2015有同样的问题。我发现它与调试选项有关,请启用TOOLS-> Options-> Debugging下的“Use Managed Compatibility Mode”选项。再次调试。
答案 1 :(得分:1)
MSDN文章Using the DebuggerNonUserCode Attribute in Visual Studio 2015解释了DebuggerNonUserCode所做的和为什么它不会忽略异常。
这是由VS 2015的性能提升引起的
当启用Just My Code时,调试器不会再收到在“您的代码”之外抛出和处理的异常的通知。
这可以带来很大的性能提升,因为:
调试性能得到改善,因为启用“仅我的代码”时,调试器不会再收到在“您的代码”之外抛出和处理的异常的通知。
可以通过Update 2引入的注册表项关闭此行为:
要启用此功能,请从命令行运行以下命令,该命令将为您调整注册表:
reg add HKCU\Software\Microsoft\VisualStudio\14.0_Config\Debugger\Engine /v AlwaysEnableExceptionCallbacksOutsideMyCode /t REG_DWORD /d 1
您必须尝试并查看更重要的内容,忽略异常或更好的调试器性能。