Xcode Разница между отладкой и выпуском

В чем разница между отладочной и выпускной сборками для приложения Какао? Я знаю, что отладочная версия содержит дополнительную информацию для отладки, но что еще отличается?


person er.mobileapp    schedule 11.03.2011    source источник


Ответы (2)


я цитирую

«Самая большая разница между ними заключается в том, что: в отладочной сборке выдается полная символьная отладочная информация, чтобы помочь при отладке приложений, а также не учитывается оптимизация кода. В то время как в выпускной сборке символьная отладочная информация не выдается, а код выполнение оптимизировано.Кроме того, поскольку символическая информация не передается в сборке выпуска, размер окончательного исполняемого файла меньше, чем размер исполняемого файла отладки.

Можно ожидать появления забавных ошибок в сборках релизов из-за оптимизации компилятора или различий в расположении памяти или инициализации. Обычно их называют Release - Only bugs :)

Что касается скорости выполнения, исполняемый файл выпуска наверняка будет выполняться быстрее, но не всегда это различие будет значительным ».

Предоставлено Google и пользователем mcdeeiis http://haacked.com/archive/2004/02/14/difference-between-debug-vs-release-build.aspx

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

person Candyfloss    schedule 11.03.2011
comment
Спасибо Росс Александр за ссылку, она объясняет, как некоторая символическая отладочная информация будет сгенерирована в режиме отладки, что именно это означает, где просмотреть эту информацию, будет ли она полезна для очистки ошибок, если да, то как ее использовать для отладки и устранения ошибок не могли бы вы объяснить пример. - person pradeepa; 11.03.2011
comment
Символьная отладочная информация: информация, которая связывает двоичную информацию с исходным кодом. Например, номера строк, имена переменных и т. Д. Позволяет отлаживать код со ссылкой на исходный код. С точки зрения отладки это, конечно, помогает, но вы уже используете эту информацию, не осознавая :) Я считаю, что вы можете включить эту информацию в режиме выпуска, а также настройку в Xcode, но не цитируйте меня по этому поводу: P, поскольку я не перед Xcode в данный момент - person Candyfloss; 11.03.2011
comment
:) Возможно, мне придется изучить дизайн компилятора, чтобы понять эти вещи, в любом случае спасибо. :) - person pradeepa; 11.03.2011
comment
Нет причин включать символы отладки в код выпуска. Если вы использовали Build & Archive, организатор Xcode может символизировать журналы сбоев. - person Matthias Bauch; 11.03.2011
comment
developer.apple.com/tools/xcode/symbolizingcrashdumps.html вы можете найти эта ссылка полезна, и fluchtpunkt верен, однако вы можете создать две версии: выпуск и выпуск с отладкой. Иногда бывает удобно иметь - person Candyfloss; 11.03.2011
comment
спасибо Роуз, это хорошее объяснение - person er.mobileapp; 07.05.2011
comment
Думаю, это не совсем ответ на вопрос. Я предполагаю, что вопрос был больше о том, почему в xcode нет раскрывающегося меню отладки / выпуска и как узнать, что сгенерированный код будет отлаживаться или выпускаться. Это особенно неоднозначно, когда вы компилируете библиотеки, которые являются кросс-платформенными и не предназначены для Apple, поэтому они часто используют другие виды инструментов для создания файлов xcode, которые вы можете скомпилировать. Я использую физику пули, а xcode игнорирует мою библиотеку, потому что у нее нет правильного двоичного формата. файл был создан для архива, который не связан с архитектурой - person jokoon; 22.08.2012
comment
Отладка используется только при установке точек останова или всегда при запуске приложения? Выпуск используется только при архивировании для отправки в магазин приложений или когда он используется? Потому что, когда я создаю новый стандартный проект в xCode, схема по умолчанию создается при отладке. Но я не нашел схемы, которая использует релиз .. - person user1007522; 15.12.2014
comment
@Matthias: эти символические журналы сбоев из сборок без отладочной информации не содержат номеров строк, что делает их намного менее полезными, чем те из сборок, которые содержат отладочную информацию. Поскольку естественные сбои на устройствах конечных пользователей обычно происходят в сборках выпуска, может быть предпочтительнее создавать сборки выпуска с включенной отладочной информацией - отличие от простой доставки сборок отладки по-прежнему заключается в настройке оптимизации. - person Kaiserludi; 20.09.2017

Релизная версия более оптимизирована для лучшей производительности и меньшего размера.

Также из личной практики я могу сказать, что полезно включить больше предупреждений в конфигурации выпуска, чтобы знать, какие методы не используются, какие методы не имеют декларации, где сравниваются подписанные / неподписанные, а также другие полезные вещи.

person Eimantas    schedule 11.03.2011
comment
Почему бы вам не включить эти предупреждения и в режиме отладки? - person Cody Gray; 11.03.2011
comment
Поскольку они более педантичны, чем функциональны, мне приятно иметь код без предупреждений. - person Eimantas; 11.03.2011
comment
Я предпочитаю иметь код без предупреждений в режиме Release. Там это гораздо важнее, чем в режиме отладки. Если я сначала исправлю ошибки в режиме отладки, они исчезнут, когда я переключусь в режим выпуска. Что еще более важно, подобные педантичные проблемы указывают на недостатки дизайна в вашем коде - вам необходимо исправить их во время разработки / отладки, а не после того, как вы будете готовы к тестированию / выпуску. - person Cody Gray; 11.03.2011
comment
Они педантичны, потому что хотят сообщить вам о некоторой (потенциальной) проблеме, которую вы должны исправить. Если вы включаете их во время разработки, их в большинстве случаев легко исправить, как только они появятся в первый раз. - person DarkDust; 11.03.2011