在生产中部署调试版本有什么大不了的

时间:2011-10-31 16:51:59

标签: release debug-symbols

考虑到90%的时间,开发人员正在使用调试版本,为什么要更好地部署版本构建?

5 个答案:

答案 0 :(得分:1)

尺寸,速度和内存使用情况。

您的用户不需要您使用的所有调试程序,因此剥离调试符号可以减少二进制大小和内存消耗(因此可以提高速度,因为将程序的组件加载到RAM中所花费的时间更少)。 / p>

当您的应用程序崩溃时,您通常需要回溯和详细信息。你的用户真的不在乎这个。

答案 1 :(得分:0)

部署调试版本没有任何问题。人们通常不这样做,因为非调试版本往往更有效(即断言代码被删除,编译器不会在目标代码中插入跟踪/调试器信息)。

答案 2 :(得分:0)

使用Java 1.1,调试版本可能会慢得多,而且需要更多磁盘空间(当时,120 兆字节的磁盘巨大 - 尝试适合您的这么小的设备上的主目录......)。

今天,两者都不再是问题了。 Java运行时忽略了调试符号,并且使用JIT,代码在运行时进行了优化,因此编译时优化不再意味着那么多。

调试版本的一大优势是生产中的代码正是您测试的代码。

答案 3 :(得分:0)

这完全取决于构建配置,它可能在执行“发布”构建时具有编译优化。还有其他考虑因素,取决于语言;例如,在使用Visual C ++编译应用程序时,可以针对不允许重新分发的C RunTime(CRT)的调试版本进行编译。

答案 4 :(得分:0)

我认为这里的关键是确定构建“调试构建”究竟是什么。主要是生产构建更加优化(内存使用,性能等),并且已经采取了更加谨慎的方式来构建它,使其更易于部署和维护。我遇到的一个主要问题是调试版本有很多不需要的日志记录,这会导致非常引人注目的性能损失。

除此之外,没有任何理由不将调试版本部署到生产环境中。