Расшифровка YSOD, техники беспредела - PullRequest
4 голосов
/ 18 октября 2008

Сколько можно связать, сделать это?

Ошибка сервера в / Application


Ссылка на объект не установлена ​​для объекта

Описание: Ссылка на объект не установлена ​​для объекта.

Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена ​​для объекта.

Ошибка источника:

Line 56:    posts.Add(post);

На более серьезной ноте, что вы в первую очередь ищете, когда видите желтый экран смерти? Половина времени отладочная трасса фактически не говорит вам, в чем проблема (понятно, я полагаю).

Должен признать, я все еще использую Response.Write больше, чем следовало бы. Мне просто лень проходить через отладчик. Какие методы вы используете для устранения проблемы?

Ответы [ 5 ]

1 голос
/ 18 октября 2008

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

  • Добавить свойства, такие как SQL Заявление выполняется. Два дисплея текстовые поля сообщения, одно для отображения пользователям, один для отображения на разработчики (в режиме отладки) Кто вошедший в систему пользователь. Получить всю форму переменные, чтобы вы знали, что они были пытаюсь войти.

  • Журнал ошибок где-то (журнал событий хорошо, если вы можете получить доступ к сети сервер; вход в базу данных менее успешным, когда так много Исключением является невозможность доступа база данных).

  • Создание кода в базовом классе страницы MasterPage или веб-страницы События ошибок и События приложений для ведения журнала.

  • Создать пользовательскую страницу ошибки. Когда в режим отладки, пользовательская страница ошибки отображает все Когда не в режим отладки (производство), дисплей только выбранные свойства пользовательское исключение.

Если вы потратите время на это заранее, вы сэкономите много часов страданий.

1 голос
/ 18 октября 2008

Если я не могу определить / устранить проблему, используя сообщение об ошибке, которое мне представляет страница, я обычно стараюсь использовать средство просмотра событий Windows, чтобы помочь мне определить причину проблемы.

Например, ошибки SharePoint иногда намного меньше, чем описательные. Итак, я объединю то, что вижу на Y.S.O.D. с сообщениями об ошибках из Event Viewer, чтобы помочь мне сузить причину.

Я сделаю все возможное, чтобы попросить коллегу или другого сотрудника, который, я думаю, мог бы иметь некоторый опыт, который мог бы помочь. Если я все еще не могу определить причину, я прибегну к Google, вооруженному всей информацией.

0 голосов
/ 18 октября 2008

Используйте подходящую структуру ведения журналов, такую ​​как log4net , и будьте либеральны при использовании ведения журнала на уровне DEBUG.

По сути, это более точная версия вашего подхода Response.Write, который можно оставить в вашем рабочем коде и при необходимости "включить".

0 голосов
/ 18 октября 2008

предоставленная информация об ошибке, при условии, что вы находитесь в режиме отладки, даст вам информацию о том, в какой строке на самом деле произошла ошибка, а также в строках кода, приведших к ошибке. Эта информация должна дать вам хорошее начало при определении места установки точек останова для отладки.

Однажды я был на вашем месте много месяцев назад, используя response.write для отладки. Как только вы начнете использовать IDE и отладчик по назначению, вы обнаружите, что меньше тратите время и быстрее получаете решения.

Кроме того, открытие непосредственного окна во время отладки сделает вашу жизнь еще более счастливой.

0 голосов
/ 18 октября 2008

Обычно я выполняю отладку на локальном компьютере с помощью веб-сервера Cassini (поставляется с VS 2005/2008). Если я вижу исключение в моем QA или, боже упаси, в моей рабочей коробке это обычно потому, что я забыл обновить строки подключения, чтобы они указывали на базу данных QA / production вместо моего локального компьютера.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...