C # двоичное дерево поиска - переполнение стека - отладка - PullRequest
2 голосов
/ 04 августа 2010

Я новичок в изучении C # после C ++. VS2010.

Пытаясь отладить мой код, я сталкиваюсь со странными пустыми строками во фрейме "localals". Отладчик просто закрывается через несколько секунд после того, как я уставился на эти пустые строки.

Пожалуйста, проверьте это: http://pastebin.com/KZbfy8JF

Спасибо.

Я потратил как минимум 3 часа на поиски решений и безрезультатно поигрался с кодом.

Ответы [ 3 ]

9 голосов
/ 04 августа 2010

Получатель и установщик свойства Value бесконечно рекурсивны - измените их на:

public T Value { get; set; }
2 голосов
/ 04 августа 2010

Уже ответили (значение получить / установить), но вот совет:

В VS.NET нажмите CTRL + ALT + E, чтобы открыть диалоговое окно Исключения (в зависимости от вашего профилявыбранный в VS.NET, он также может быть в Debug-> Exceptions).Это позволяет прерывать работу при возникновении определенных типов исключений, в отличие от полного раскручивания стека и, в конечном итоге, сбоя программы.

Для «Общих исключений времени выполнения» установите флажок «Брошено», нажмите «ОК», затем запуститепрограмма.Выполнение вашей программы остановится в точке исключения, что должно сделать ее намного более очевидной.

В вашем случае программа нарушает вашу собственность.Чтобы увидеть больше, откройте Call Stack wndow (Debug-> Windows-> Call Stack или CTRL + ALT + C), чтобы увидеть полный стек, и вы увидите, что ваше свойство - почти единственная вещь вэто.

0 голосов
/ 04 августа 2010

Хорошо, как правило, переполнение стека означает, что вы вернетесь, не возвращаясь. Однако я не вижу, где вы это делаете. Что бы я сделал, это вставил бы оператор Console.WriteLine в нескольких стратегических местах, чтобы увидеть, какие строки выполняются и как часто. Например, в начале вставки и во внутреннем цикле. Это должно дать вам (и нам;) немного больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...