Перейти к содержимому

Фотография

Debug/Release в чем разница?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Jazzyekim

Jazzyekim

    Новый участник

  • Members
  • Pip
  • 22 сообщений

Отправлено 18 декабря 2007 - 13:24

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

#2 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 18 декабря 2007 - 14:19

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

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

Абстрактно говоря - в дебаг версии может быть включено:
1. Отладочный вывод
2. Дополнительные параметры запуска приложения, которые умеют подсчитывать, например, расход памяти или время выполнения итд. итп.
3. Дополниетельные интерфейсы (hotspot-ы), используемые например, для подключения различных средств автоматизации
  • 0
Regards,
Alexey

#3 Jazzyekim

Jazzyekim

    Новый участник

  • Members
  • Pip
  • 22 сообщений

Отправлено 18 декабря 2007 - 15:17

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

Речь идет о языках С/С++
  • 0

#4 Darkus

Darkus

    Опытный участник

  • Members
  • PipPipPipPip
  • 424 сообщений
  • Город:Казахстан, г.Астана

Отправлено 19 декабря 2007 - 03:59

Грубо говоря, в Debug версию включается дополнительная информация для возможной отладки.
(Так, например, кроме сборок(написанных на С#) дополнительно ложатся в конечный каталог pdb файлы.)

К тому же разработчики часто вставляют конструкции типа Debug.Assert, которые в релиз версии просто не сработают.
В вашем случае (С\С++) нужно обязательно тестировать и Debug, и Release версии, т.к. там есть особенности связанные с освобождением памяти (тестировать нужно на предмет "утечек" памяти - некоторые функции по-разному себя ведут, к тому же кое где идёт освбождение ресурсов автоматом в Debug).

Сборки C# практически избавлены от такой разницы (Debug\Release), там заведует этим делом сборщик мусора. Хотя, попадаются иногда тоже интересные случаи.
  • 0

#5 grr~

grr~

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Сергей Крушевский

Отправлено 19 декабря 2007 - 15:01

В принципе на ваш вопрос ответили, добавлю кое-какие наблюдения из своей практики:
1. Дебажная информация может присутствовать как в бинарнике откомпилированой программы, так и лежать отдельно в dbg файле.
2. У некоторых невнимательных разработчиков есть тенденция к неправильному дефайну кода, т.е. в релизную конфигурацию попадает код который должен идти в дебаг и наборот.

Дебаг информацию мы использовали для получения покрытия исходного кода тестами - Rational Coverage, для ловли утечек памяти - Rational Purify.
Все вышесказаное касается С++. :ok:

Сборки C# практически избавлены от такой разницы (Debug\Release), там заведует этим делом сборщик мусора. Хотя, попадаются иногда тоже интересные случаи.


Darkus, не могли бы вы поделится примерами?
  • 0

#6 Darkus

Darkus

    Опытный участник

  • Members
  • PipPipPipPip
  • 424 сообщений
  • Город:Казахстан, г.Астана

Отправлено 20 декабря 2007 - 04:25

Darkus, не могли бы вы поделится примерами?

В целом проблема состояла в том, что в Debug сборщик мусора работал как положено, а в Release устанавливается галочка "Оптимизация" и сборщик мусора начинал чистить с учётом этой опции.
Наш пример дать не могу, но вот, нашёл близкий случай.

Если не про GC, то встречаются распространённые ошибки, когда переменную забывали проинициализировать.
В Debug (для ссылочных типов) по умолчанию вставлялось значение типа 0, а в Release это уже null. Соответственно получали unhandled exception....
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных