C#二叉搜索树 - 堆栈溢出 - 调试

时间:2010-08-04 16:17:41

标签: c# debugging c#-4.0 stack-overflow

我是C ++之后学习C#的新手。 VS2010。

尝试调试我的代码,我在“locals”框架中遇到了奇怪的空行。 调试器在我几秒钟后盯着这些空行退出。

请查看:http://pastebin.com/KZbfy8JF

感谢。

我花了至少3个小时寻找解决方案并玩弄代码无济于事。

3 个答案:

答案 0 :(得分:9)

Value属性getter和setter是无限递归的 - 将它们更改为:

public T Value { get; set; }

答案 1 :(得分:2)

已经回答(价值获取/设定),但这是一个提示:

在VS.NET中,按CTRL + ALT + E打开Exceptions对话框(取决于您在VS.NET中选择的配置文件,它可能在Debug-> Exceptions下)。这可以让你在抛出某些异常类型时中断,而不是完全堆栈展开和程序最终崩溃。

对于“Common Language Runtime Exceptions”,选中“Thrown”复选框,单击OK,然后运行您的程序。程序的执行将在异常点停止,这应该会更加明显。

在您的情况下,该程序会破坏您的财产。要查看更多内容,请打开Call Stack wndow(调试 - >> Windows->调用堆栈或CTRL + ALT + C)以查看完整堆栈,您会看到您的属性只是其中的唯一内容

答案 2 :(得分:0)

一般来说,堆栈溢出意味着你在没有回头的情况下递归。但是,我不知道你在哪里这样做。我要做的是在几个战略位置插入一个Console.WriteLine语句,以查看执行的行和频率。例如,在Insert的开头和内部循环中。这应该给你(和我们;)更多的信息。