Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
"Отладка" и "Выпуск" являются просто названиями предопределенных конфигураций проекта, определенных Visual Studio.
Для наблюдения различий посмотрите на Вкладку Сборки в Свойствах проекта в Visual Studio.
различия в VS2005 включают:
ОТЛАЖИВАЮТ постоянный определенный в Настройке отладочного процесса
, Оптимизируют код, включенный в конфигурации Выпуска
, а также другие различия, которые Вы видите путем нажатия на кнопку
"Advanced", Но Вы можете:
Изменяют настройки сборки для конфигураций Отладки и Выпуска в Propeties Проекта / Сборка
Создает Ваши собственные конфигурации путем щелчка правой кнопкой по решению в Проводнике Решения, и выбирая Менеджер конфигурации
я думаю, что поведение постоянной ОТЛАДКИ довольно ясно (может быть сослан в #if директиве препроцессору или в ConditionalAttribute). Но я не знаю ни о какой подробной документации относительно точно, какая оптимизация включена - на самом деле я подозреваю, что Microsoft хотела бы быть свободной улучшить их оптимизатор без уведомления
Нет одного документа, который перечисляет различия. В дополнение к некоторым различиям, уже перечисленным, компилируя в Режиме отладки, выключает большую часть оптимизации JIT-компилятора, которая выполняется во времени выполнения, и также испускает больше полной отладочной информации в в файл базы данных символа (.pdb).
Другая большая разница - то, что поведение GC несколько отличается в этом, JIT-компилятор вставит вызовы в GC.KeepAlive () как соответствующие/необходимые для поддержки сеансов отладки.
Я не знаю об одном кратком документе, но:
Одна главная performanance область, если Вы используете какие-либо из средств управления Ajax ASP.NET: отладочная информация удалена из библиотеки JavaScript при выполнении в выпуске, и я видел основные улучшения производительности на сложных страницах. Другие веб-ресурсы могут или кэшироваться или не кэшироваться на основе этой установки.
кроме того, помните, что Отладку / Выпуск в веб-приложении диктуют web.config
файл, не Ваши настройки в рамках Visual Studio.
<system.web>
<compilation debug="true">
[еще 117] информация:
Рисунок с GDI + значительно медленнее в Режиме отладки.
Версия выпуска:
значительно быстрее (самый важный), оптимизировал
, не может быть отлажен (шаг за шагом)
, и код, записанный в директиве "отладки", не включен
, Видят , Каково различие между Отладкой по сравнению со Сборкой конечных версий? .