我在调试XNA项目时遇到了一个奇怪的问题。每当我点击一个特定的断点并开始浏览“Locals”窗口时,整个过程和调试程序就会终止,而不会发出任何通知。触发器可能会到达带有红色感叹号的字段,并显示“功能评估被中止”。XNA - 进程在调试时意外终止
我在我的代码中没有使用显式多线程,因此我很困惑当进程实际上不运行时,进程如何终止(看起来好像它正确地到达最后)。
感谢您的任何帮助。
我在调试XNA项目时遇到了一个奇怪的问题。每当我点击一个特定的断点并开始浏览“Locals”窗口时,整个过程和调试程序就会终止,而不会发出任何通知。触发器可能会到达带有红色感叹号的字段,并显示“功能评估被中止”。XNA - 进程在调试时意外终止
我在我的代码中没有使用显式多线程,因此我很困惑当进程实际上不运行时,进程如何终止(看起来好像它正确地到达最后)。
感谢您的任何帮助。
这是因为您的访问器是无限递归的,导致堆栈溢出。
更改此:
get { return Level; }
要这样:
get { return level; }
这实际上是在Visual Studio C#一个相当普遍的事情,这是非常恼人的,自动完成功能会一直喜欢访问即使你在访问者本身内,也可以使用成员名称。我计算了5年后,微软现在已经修复了这个问题。
编辑:n/m我看你已经在你自己的问题中得出这个结论。我想我应该先读完所有的东西,然后我跳了起来。
好吧,我已经找到了解决方案,因此,任何人有类似的问题,在这个问题可能会发生谁:当试图评估导致堆栈溢出的属性,调试器挂即
protected int level;
public int Level
{
get { return Level; }
}
正如这里进一步解释的那样http://netpl.blogspot.com/2009_05_01_archive.html
听起来好像连接的调试器可能会崩溃。它总是处于相同的断点/方法评估中吗?还是看似随机?另外,你使用的是什么版本的Visual Studio(即Express,Professional,Ultimate)? – 2012-02-02 10:58:47
我使用的是VS2010旗舰版,它并不完全是随机的,但我认为崩溃发生在多个断点上。有趣的是,当我不浏览当地人,只是让调试器达到断点后,什么都不会发生。 – 2012-02-02 11:35:25
听起来像调试器本身在试图评估当地人时崩溃了。之前我有类似的问题,并且隔离起来并不是特别容易。 – 2012-02-02 11:43:25