Точка останова внезапно закрывает окно «местных жителей»

1

Я пытаюсь отладить переменную в моем коде. Я использую точку останова, но когда моя мышь перебирает любую из переменных, присутствующих в "locals", это локальное окно внезапно закрывается без какого-либо предупреждения. Также многие строки пустые. Это ошибка?

Изображение 174551

  • 0
    Ваше расположение окон должно быть довольно беспорядочным, трудно рассуждать из-за возможных причин этой неудачи. Возможно, пришло время использовать команду Windows + Reset Window Layout.
  • 0
    Может ли код, поддерживающий одно из показанных свойств, вызывать Application.Exit ? Может ли при оценке одного из свойств переполнение стека? Может ли оценка одного из свойств быть заблокирована из-за оператора lock ? Может ли оценка одного из свойств пытаться и не доставлять сообщения? Поскольку отображение объектов в окне наблюдения вызывает ToString() по всем их отраженным свойствам, на самом деле любой код может быть вызван.
Теги:
visual-studio
debugging
visual-studio-2010

1 ответ

1

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

    readonly bool isSigned;
    public bool IsSigned { get { return IsSigned; } }

Исправьте бесконечную рекурсию, и проблема должна исчезнуть:

    readonly bool isSigned;
    public bool IsSigned { get { return isSigned; } }

Вы можете поймать StackOverflowException когда оно выбрано с помощью Visual Studio, выбрав в строке меню "Отладка" → "Исключения" → "Найти..." → введите "stackoverflow" → отметьте "Брошено" для System.StackOverflowException → "ОК"

Изображение 174551

Если "Исключения" не отображаются в меню "Отладка" вашей версии Visual Studio, следуйте инструкциям для добавления команды "Исключения" в меню "Отладка" для вашей версии VS.

update Просто проверено, похоже, что Visual Studio не будет разбиваться на StackOverflowException если оно появится в окне просмотра. Если вы не можете найти ошибку при проверке кода, что вам нужно сделать, чтобы найти бесконечную рекурсию, нужно удалить все в окне просмотра, а затем добавить строку или строки в ваш фактический код, чтобы получить доступ к свойствам, которые могут вызвать рекурсия, checkaoprimeiroradiobuttonG в вашем случае, например

var tmp1 = checkaoprimeiroradiobuttonG;
var tmp2 = desactivabetaoadicionalG;

В этом случае рекурсия должна быть поймана.

Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню