Как узнать, что изначально вызвало исключение, если оно было выброшено из кода Microsoft?

StackOverflow https://stackoverflow.com/questions/685407

Вопрос

У меня есть два элемента управления, содержащие DataGridViewна разных панелях в DockPanel.Если кто-то находится в режиме редактирования, и я переключаю панель, я получаю NullReferenceException выброшенный изнутри DataGridView's EndEdit() метод.Трассировка стека не идет глубже, и исключение не содержит дополнительной информации.

Я посмотрел на этот метод в рефлекторе и не увидел ничего явно нулевого.Я подозреваю, что проблема на самом деле в моем коде, но исключение повторно генерируется из кода Microsoft, что приводит к сбросу трассировки стека.Как узнать, что изначально вызвало исключение?

Это было полезно?

Решение

Если вы подозреваете ошибку в коде MS, вы можете загрузить символы отладки с сервера символов, загрузить их и отследить их при отладке? Вот так.

Обратите внимание, что на символы распространяется действие одной из различных лицензий.Это может повлиять на вас, если (например) вы работаете над «моно»-материалами и т. д.

Другие советы

Вы изучили свойство InnerException?

Следуйте инструкциям по настройке MS сервер символов и исходный сервер1.Настройте отладчик на прерывание при возникновении исключения NullReferenceException.Тогда вы либо получите полный исходный код для отладки, либо хотя бы полную трассировку стека.

1 Обратите внимание, что перечисленные QFE включены в SP1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top