无法在64位操作系统上的Visual Studio中从catch设置Next语句

fra*_*ins 4 c# debugging 64-bit visual-studio windows-7

我们最近搬到了64位操作系统(Windows 7)并安装了visual studio 2008.现在在调试异常时,我无法将下一个语句设置回try块中的代码.我用谷歌搜索了这篇文章并点击了这篇文章.

http://blogs.msdn.com/b/dougste/archive/2007/03/21/unable-to-set-next-statement-when-debugging-a-64-bit-debuggee-in-visual-studio- 2005年sometimes.aspx

这解释了它,但这可追溯到2007年.现在有任何解决方案或解决方案吗?

Han*_*ant 9

.NET使用Windows结构化异常处理的底层管道.实现x64异常处理的方式有很大差异.它使用由编译器生成的地址表来定位适当的异常过滤器.x86使用函数指针的链接列表,编译器更容易实现.

x64方式改变的原因之一是出于安全原因,病毒代码设法通过修补链表并引发异常来注入自身,允许其有效负载执行.在XP SP1中存在针对此问题的对策,但代价是效率.x64重新设计避免了这种成本.

好吧,你可以看到它的发展方向.无论如何,您应该将平台目标设置为x86来调试代码.这也启用了Edit + Continue,这是一个非常有价值的调试辅助工具.这是VS2010项目的默认设置.只有为Release版本翻转到AnyCPU.

  • 在 VS2010 中,即使我将其设置为 `AnyCPU` 或 `x86`,我也无法展开 * 或 * 跳过 throw 语句。它是否也依赖于其他设置? (2认同)