Отключить перенос исключений WPF для отладки - PullRequest
6 голосов
/ 01 ноября 2011

Есть ли способ отключить очень раздражающую обертку исключений WPF при отладке?

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

То, что я должен увидеть, это

        get
        {
            throw new StackOverflowException(); // < Exception happened here
        }

Вместо этого я вижу ...

    No Source Available
    Call Stack Location:
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k) + 0x64 bytes  

Из-за исключения WPF это исключение:также иногда перехватывается и отправляется, затем либо перебрасывается, либо скрывается глубоко внутри MS.Internals, и его невозможно вернуть на место фактического исключения.Это приводит к тому, что мы видим гигантский стек вызовов PresentationFramework.dll, PresentationCore.dll и WindowsBase.dll, но НЕТ пользовательского кода, за исключением App.Main ().

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

1 Ответ

3 голосов
/ 05 ноября 2011

Обычно при отладке я использую отладку -> исключения и выбираю «выброшенные» для общеязыковых исключений времени выполнения.Затем он остановится в момент, когда сгенерировано исключение.

Visual Studio 2010 Exceptions dialog with common language runtime exceptions ticked

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