2016-12-27 5 views
1

Каковы недостатки отладки собственной программы на C++ с использованием Visual Studio в режиме выпуска? Почему я должен беспокоиться о себе, настраивая два разных режима, а не просто отлаживая режим освобождения?Против отладки в режиме освобождения

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

Других слов, почему я должен иметь режим отладки, где я должен связать мой проект с отладочной версией любой третьей стороны, в то время как я могу просто изменить режим выпуска на «отлаживаемую версию режима выпуска» (предположим, что я не хочу копаться в третьей библиотеке при отладке моего приложения)

ответ

6

Если вы a) генерируете информацию об отладке и b) отключите оптимизацию, то это вряд ли режим выпуска. Это режим отладки без включенного _DEBUG.

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

Увы, типы проблем, возникающих при сборке только для релизов, как правило, вызваны оптимизациями, поэтому такая конструкция имеет ограниченное использование. Но если это вам подходит, ничто не мешает вам использовать его.

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

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

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

+0

Спасибо .. то, что я пытаюсь сказать, - это почему я должен иметь режим отладки, когда мне нужно связать мой проект с отладочной версией какой-либо третьей стороны, хотя я могу просто изменить режим выпуска на «отладочную версию выпуска» mode " –

+1

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

+0

Кроме того, режим _DEBUG сторонней библиотеки может генерировать ведение журнала, которое может быть полезно вам для отладки, а также может выполнять дополнительную проверку входных параметров, что абсолютно необходимо для разработки надежного программного обеспечения, поэтому вы не хотите быть развивается в сторонней библиотеке, которая не находится в режиме _DEBUG. –

1

Вам не хватает библиотеки времени отладки! Это проверит неверные аргументы среды выполнения, тип ошибки, которая может привести к необъяснимым сбоям в среде выполнения релиза.

Смежные вопросы