2012-02-02 64 views
4

我在调试XNA项目时遇到了一个奇怪的问题。每当我点击一个特定的断点并开始浏览“Locals”窗口时,整个过程和调试程序就会终止,而不会发出任何通知。触发器可能会到达带有红色感叹号的字段,并显示“功能评估被中止”。XNA - 进程在调试时意外终止

我在我的代码中没有使用显式多线程,因此我很困惑当进程实际上不运行时,进程如何终止(看起来好像它正确地到达最后)。

感谢您的任何帮助。

+0

听起来好像连接的调试器可能会崩溃。它总是处于相同的断点/方法评估中吗?还是看似随机?另外,你使用的是什么版本的Visual Studio(即Express,Professional,Ultimate)? – 2012-02-02 10:58:47

+0

我使用的是VS2010旗舰版,它并不完全是随机的,但我认为崩溃发生在多个断点上。有趣的是,当我不浏览当地人,只是让调试器达到断点后,什么都不会发生。 – 2012-02-02 11:35:25

+0

听起来像调试器本身在试图评估当地人时崩溃了。之前我有类似的问题,并且隔离起来并不是特别容易。 – 2012-02-02 11:43:25

回答

7

这是因为您的访问器是无限递归的,导致堆栈溢出。

更改此:

get { return Level; } 

要这样:

get { return level; } 

这实际上是在Visual Studio C#一个相当普遍的事情,这是非常恼人的,自动完成功能会一直喜欢访问即使你在访问者本身内,也可以使用成员名称。我计算了5年后,微软现在已经修复了这个问题。

编辑:n/m我看你已经在你自己的问题中得出这个结论。我想我应该先读完所有的东西,然后我跳了起来。

0

好吧,我已经找到了解决方案,因此,任何人有类似的问题,在这个问题可能会发生谁:当试图评估导致堆栈溢出的属性,调试器挂即

protected int level; 
    public int Level 
    { 
     get { return Level; } 
    } 

正如这里进一步解释的那样http://netpl.blogspot.com/2009_05_01_archive.html