Отладка по сравнению с выпуском в.NET

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
55
задан niico 30 April 2018 в 20:47
поделиться

6 ответов

"Отладка" и "Выпуск" являются просто названиями предопределенных конфигураций проекта, определенных Visual Studio.
Для наблюдения различий посмотрите на Вкладку Сборки в Свойствах проекта в Visual Studio.

различия в VS2005 включают:

  • ОТЛАЖИВАЮТ постоянный определенный в Настройке отладочного процесса

  • , Оптимизируют код, включенный в конфигурации Выпуска

, а также другие различия, которые Вы видите путем нажатия на кнопку

"Advanced", Но Вы можете:

  • Изменяют настройки сборки для конфигураций Отладки и Выпуска в Propeties Проекта / Сборка

  • Создает Ваши собственные конфигурации путем щелчка правой кнопкой по решению в Проводнике Решения, и выбирая Менеджер конфигурации

я думаю, что поведение постоянной ОТЛАДКИ довольно ясно (может быть сослан в #if директиве препроцессору или в ConditionalAttribute). Но я не знаю ни о какой подробной документации относительно точно, какая оптимизация включена - на самом деле я подозреваю, что Microsoft хотела бы быть свободной улучшить их оптимизатор без уведомления

50
ответ дан Joe 7 November 2019 в 07:19
поделиться

Нет одного документа, который перечисляет различия. В дополнение к некоторым различиям, уже перечисленным, компилируя в Режиме отладки, выключает большую часть оптимизации JIT-компилятора, которая выполняется во времени выполнения, и также испускает больше полной отладочной информации в в файл базы данных символа (.pdb).

Другая большая разница - то, что поведение GC несколько отличается в этом, JIT-компилятор вставит вызовы в GC.KeepAlive () как соответствующие/необходимые для поддержки сеансов отладки.

15
ответ дан Scott Dorman 7 November 2019 в 07:19
поделиться

Я не знаю об одном кратком документе, но:

  • Отладка. Запишите, что вызовы разделяются в Выпуске
  • В Выпуске, Ваш CallStack может выглядеть "немного странным" из-за оптимизации, как обрисовано в общих чертах Scott Hanselman
13
ответ дан Peter Mortensen 7 November 2019 в 07:19
поделиться

Одна главная performanance область, если Вы используете какие-либо из средств управления Ajax ASP.NET: отладочная информация удалена из библиотеки JavaScript при выполнении в выпуске, и я видел основные улучшения производительности на сложных страницах. Другие веб-ресурсы могут или кэшироваться или не кэшироваться на основе этой установки.

кроме того, помните, что Отладку / Выпуск в веб-приложении диктуют web.config файл, не Ваши настройки в рамках Visual Studio.

<system.web>
    <compilation debug="true">
[еще 117] информация:

5
ответ дан dunc 7 November 2019 в 07:19
поделиться

Рисунок с GDI + значительно медленнее в Режиме отладки.

4
ответ дан Hallgrim 7 November 2019 в 07:19
поделиться

Версия выпуска:

  1. значительно быстрее (самый важный), оптимизировал

  2. , не может быть отлажен (шаг за шагом)

  3. , и код, записанный в директиве "отладки", не включен

, Видят , Каково различие между Отладкой по сравнению со Сборкой конечных версий? .

2
ответ дан Peter Mortensen 7 November 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: