2012-01-03 2 views
0

Dumpfile сообщает об исключении NullReferenceException. Я могу увидеть stacktrace, какой метод выбрасывает это исключение. Этот метод сам по себе длинный и делает много вещей. Есть ли какой-то способ определить, какой объект на самом деле был нулевым?, вызывающий объект NullReferenceException

ответ

3

A NullReferenceException указывает недостаток объекта - нет такой вещи, как нулевой объект. Предполагаю, вы имеете в виду, что переменная была равна нулю, а точнее, какое выражение оценивается как null. Нет, нет ничего, что укажет на это.

Если вы используете сборку отладки, вы должны получить номера строк в трассировке стека, что должно помочь вам привязать ее к отдельному утверждению. Если вы используете сборку релизов, у вас, вероятно, нет номеров строк - это одна из многих причин держать ваши методы короткими и милыми.

В качестве альтернативы, если вы используете WinDbg и может сделать перерыв, когда происходит исключение, которое должно дать вам хорошее представление, конечно ...

+0

Я думал, что может быть каким-то образом определить, какая была последняя инструкция, которая выполнялась (через! Dso,! Dumpil или! U или какую-то другую инструкцию) ??? –

+0

@palmsnow: Не то, что я знаю. Это возможно *, что есть конкретный способ получения информации на основе windbg, но лично я попытался бы сделать ваш код более легко диагностируемым для начала. Если у вас есть объект исключения, который каким-то образом был сериализован (в отличие от просто преобразованного в текст), то это возможно * имеется больше информации ... –

3

! Sosex.mk даст вам IL смещение в точка отказа. Вы можете использовать эту информацию в сочетании с одним или несколькими методами разборки, чтобы увидеть, что происходит. ! sos.U,! sos.dumpil или! sosex.muf разобьет этот метод и позволит вам проверить код в месте сбоя. Чтобы найти соответствующие поля, локали или аргументы в оптимизированном коде, вам нужно использовать! Sos.dso или! Sosex.mdso для выгрузки объектов в стеке и в регистрах, а затем выполнить некоторые расследования. ! sosex.mdso позволит вам ограничить вывод количеством чисел или несколькими механизмами фильтрации.

Смежные вопросы