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

时间:2011-01-19 21:22:36

标签: c# visual-studio debugging windows-7 64-bit

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

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年。现在有没有解决方案或解决方法?

2 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:1)

疯狂的回答:只在catch中添加一个赋值变量,在它下面放一个if / process。