Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Debug \ Release


Автор: Aurus 28.12.2005, 17:39
В чём разница между "Debug" и "Release". Я просто не понимаю smile

Автор: mr.DUDA 28.12.2005, 18:14
Цитата(Aurus @ 28.12.2005, 16:39)
В чём разница между "Debug" и "Release". Я просто не понимаю 

По умолчанию, в Release-конфигурации:
1) включена опция Optimize Code
2) выключена опция Generate Debug Information (не генерится pdb-файл)
3) отсутствует константа препроцессора DEBUG, что приводит к отключению всех conditional-методов с данной константой (например, отключаются все методы System.Diagnostics.Debug: Assert, Write, Fail и др.)

Автор: Aurus 29.12.2005, 18:47
вообщем я мало чего понял.
и так:
1)что за опция Optimize Code?
2)не генерится pdb-файл - что это за файл такой?
3)что такое conditional-методы ?

я вообще ламо в этом деле. обьясните на пальцах - если можно.
заранее спасибо.

Автор: mr.DUDA 30.12.2005, 11:06
Цитата(Aurus @ 29.12.2005, 17:47)
1)что за опция Optimize Code?
2)не генерится pdb-файл - что это за файл такой?
3)что такое conditional-методы ?

Очень хочется сказать: читай MSDN...
1) оптимизация кода - это оптимизация кода smile
2) файл с отладочной информацией, без него не получится "пошагать" по исходному коду в отладке
3) методы, помеченные атрибутом [Conditional("имя_константы")], компилятор автоматически убирает их объявление и вызовы из сборки, если константа эквивалентна false

Автор: WTF 30.12.2005, 12:53
А еще можно вот так сделать:
Код

#if DEBUG
// этот код выполнится только в DEBUG версии
...
#else
// а этот - только в RELEASE
...
#endif


Как правило DEBUG версия используется в процессе разработки приложения, а RELEASE - когда оно идет в эксплуатацию пользователям.

Автор: Exception 30.12.2005, 13:06
Кстати (если не ошибаюсь), при Debug компилер вставляет IL-инструкции nop в код, а в Release он так не делает. Правда, зачем эти nop нужны, не знаю...

Автор: dronzo 30.12.2005, 14:13
Ага, самому стало интересно. Вот, что нашёл по этому поводу.

http://www.panopticoncentral.net/archive/2004/02/03/267.aspx

Цитата
What does /optimize do?
....
It removes any NOP instructions that we would otherwise emit to assist in debugging. When optimizations are off (and debugging information is turned on), the compiler will emit NOP instructions for lines that don't have any actual IL associated with them but which you might want to put a breakpoint on. The most common example of something like this would be the “End If“ of an “If” statement - there's no actual IL emitted for an End If, so we don't emit a NOP the debugger won't let you set a breakpoint on it. Turning on optimizations forces the compiler not to emit the NOPs.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)