2012-02-02 2 views
4

У меня есть любопытная проблема с отладкой моего проекта XNA. Всякий раз, когда я нажимаю определенную точку останова и начинаю просмотр окна «Местные жители», весь процесс и отладчик заканчиваются без уведомления о том, почему. Триггер может попасть в поле с красным восклицательным знаком, в котором говорится: «Оценка функции была прервана».XNA - Процесс неожиданно завершается при отладке

Я не использую явное многопоточность в моем коде, поэтому я одурманен тем, как процесс может завершаться (казалось бы, правильно дошел до конца), когда он на самом деле не запускается.

Спасибо за любую помощь.

+0

Звучит так, как будто прилагаемый отладчик может быть сбой. Всегда ли это на той же контрольной точке/методе оценки; или это кажется случайным? Кроме того, какую версию Visual Studio вы используете (например, Express, Professional, Ultimate)? –

+0

Я использую VS2010 Ultimate, это не совсем случайно, однако я думаю, что авария произошла на нескольких контрольных точках. Интересно, что, когда я не просматриваю Locals и просто позволяю отладчику после удара точки останова, ничего не происходит. –

+0

Звучит похоже, что сам отладчик рушится, пытаясь оценить местных жителей. Раньше у меня была аналогичная проблема, и это не особенно легко изолировать. –

ответ

7

Это происходит потому, что ваш аксессуар бесконечно рекурсивный, вызывая переполнение стека.

Изменить это:

get { return Level; } 

Для этого:

get { return level; } 

Это на самом деле довольно распространенная вещь в Visual Studio C#, это очень раздражает, то автозаполнение функция будет всегда предпочитают аксессор имя над именем члена, даже если вы находитесь в самом аксессуаре. Я понял, что через 5 лет Microsoft уже исправила его.

EDIT: n/m Я вижу, вы уже пришли к такому выводу в своем собственном вопросе. Наверное, я должен сначала прочитать все, я прыгнул с пистолета.

0

Хорошо, я нашел решение, поэтому для тех, кто может случиться на этот вопрос с подобной проблемой: Отладчик зависает при попытке оценить свойство, которое вызывает переполнение стека, т.е.

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

как поясняется здесь. http://netpl.blogspot.com/2009_05_01_archive.html

Смежные вопросы