AdaGide: режим отладки и режим выпуска - PullRequest
1 голос
/ 03 июля 2010

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

Общий вопрос состоит в том, нужно ли сначала запускать программу в режиме отладки, а затем переключаться на запуск программы в режиме выпуска, чтобы режим выпуска «пропускал» проверки, которые он обычно делает при работе в режиме отладки? Или можно сразу запустить программу в режиме релиза прямо с самого начала?

Теперь, когда дело доходит до AdaGide, я вижу опцию режима отладки и режима выпуска в разделе «Компиляция». Разве установка флажка рядом с режимом выпуска - это все, что требуется для запуска программы AdaGide в режиме выпуска? Я использую компилятор GNAT GPL.

Большое спасибо ...

Ответы [ 3 ]

1 голос
/ 03 июля 2010

Отказ от ответственности: я не знаком со спецификой режимов выпуска и отладки AdaGide.

Вообще говоря, хотя ...

Режим отладки - это когда по крайней мере флаг отладки (-g) передается компилятору, чтобы сгенерированные объектные файлы сохраняли символьную информацию для использования отладчиком. Он может передавать другие параметры, такие как -gnata, которые разрешают утверждения, и параметр связующего -E, используемый для хранения стека обратного вызова в исключениях.

Если вы не используете много утверждений (прагма Assert), вряд ли будет существенная разница с точки зрения производительности между режимами отладки и выпуска. Объектные файлы и исполняемые файлы для отладочной версии, вероятно, будут значительно больше из-за сохранения информации о символах.

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

Опции оптимизации, -O2 и т. Д., Будут более существенно влиять на производительность, хотя окончательная сумма зависит от того, как структурирован и выполнен код. YMMV.

1 голос
/ 04 января 2011

Конечно, вы можете запустить программу в режиме релиза прямо с самого начала. Но это не рекомендуется. Когда вы разрабатываете свою программу, разумнее делать это в режиме отладки. Если это программа, ориентированная на производительность, то ничто не мешает вам время от времени тестировать режим Release, чтобы увидеть, есть ли узкие места во время выполнения.

Установка галочки рядом с режимом релиза сделает AdaGIDE build вашей программой в следующий раз в "быстром" режиме. Если вы определили разные целевые каталоги, также будут два разных .exe-файла, и поэтому AdaGIDE запустит соответствующей версии.

0 голосов
/ 03 июля 2010

Вы не можете запустить программу выпуска в режиме отладки. Код может быть скомпилирован с символами отладки и сообщениями о состоянии, или он может быть скомпилирован без них. Если код скомпилирован в режиме отладки, он будет работать медленнее и занимать больше места; если он скомпилирован в режиме выпуска, он будет работать быстрее и будет более компактным. Как только код скомпилирован, его режим не может быть изменен.

Я не знаком с AdaGide или компилятором GNAT, но я предполагаю, что если вы установите флажок «Режим выпуска», код будет скомпилирован в режиме выпуска.

...