Как я могу узнать, что первоначально вызвало исключение, если оно выбрасывается из кода Microsoft? - PullRequest
4 голосов
/ 26 марта 2009

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

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

Ответы [ 3 ]

5 голосов
/ 26 марта 2009

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

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

1 голос
/ 26 марта 2009

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

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

1 голос
/ 26 марта 2009

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

...