Как мне выяснить, что изначально вызвало исключение, если оно было выброшено из кода Microsoft?
У меня есть два элемента управления, содержащие DataGridView
на разных панелях в DockPanel
, Если кто-то находится в режиме редактирования, и я переключаю панель, я получаю NullReferenceException
брошенный изнутри DataGridView
"s EndEdit()
метод. Трассировка стека не идет глубже, и исключение не содержит больше информации.
Я посмотрел на этот метод в отражателе, и я не вижу ничего, очевидно, ноль. Я подозреваю, что проблема на самом деле в моем коде, но исключение перебрасывается из кода Microsoft, и это сбрасывает трассировку стека. Как я могу узнать, что первоначально вызвало исключение?
3 ответа
Если вы подозреваете ошибку в коде MS, вы можете загрузить символы отладки с сервера символов, загрузить их и отследить до конца при отладке? Вроде так.
Обратите внимание, что на символы распространяется одна из различных лицензий. Это может повлиять на вас, если (например) вы работаете над "моно" взносами и т. Д.
Следуйте инструкциям для настройки сервера символов MS и исходного сервера1. Настройте отладчик на прерывание на создаваемое исключение NullReferenceException. Затем либо вы получите полный исходный код для отладки, либо, по крайней мере, полную трассировку стека.
1 Обратите внимание, что перечисленный QFE включен в SP1.