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

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

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

3 ответа

Решение

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

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

Вы смотрели в свойство InnerException?

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

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

Другие вопросы по тегам