AdaGide:调试模式和发布模式

Posted

技术标签:

【中文标题】AdaGide:调试模式和发布模式【英文标题】:AdaGide: debug mode and release mode 【发布时间】:2010-07-03 14:29:22 【问题描述】:

如果我理解正确,那么发布模式使程序运行得比在调试模式下运行程序更快。

一个普遍的问题是,是否必须先在调试模式下运行程序,然后切换到在发布模式下运行程序才能让发布模式“跳过”它在调试模式下运行时通常进行的检查?还是一开始就可以直接以发布模式运行程序?

现在谈到 AdaGide,我在 Compile 下看到了选项 debug mode 和 release mode。在发布模式旁边打勾是让 AdaGide 在发布模式下运行程序所需的全部内容吗?我正在使用 GNAT GPL 编译器。

非常感谢...

【问题讨论】:

【参考方案1】:

免责声明:我不熟悉 AdaGide 的发布和调试模式的细节。

一般来说,虽然...

调试模式是至少将调试标志 (-g) 传递给编译器,以便生成的目标文件将保留符号信息以供调试器使用。它可以传递其他选项,例如启用断言的 -gnata,以及用于将回调堆栈存储在异常中的 binder -E 选项。

除非您使用大量断言(pragma Assert),否则调试和发布模式之间的性能 不太可能有显着差异。不过,由于保留了符号信息,调试版本的目标文件和可执行文件可能会大得多。

发布模式可能会禁用运行时检查——这可能会对性能产生明显影响,但将其作为名义“发布”模式的一部分几乎总是非常糟糕的事情在艾达做。作为一种通用做法,在性能要求需要时禁用运行时检查,仅在它对性能有重大影响的地方,并且只有在这些代码部分已被正式证明和/或进行了详尽的测试和验证以确保正确执行。

优化选项,-O2 等,将更实质性地影响性能,尽管最终数量取决于代码的结构和执行方式。 YMMV。

【讨论】:

【参考方案2】:

当然,您可以在开始时直接以发布模式运行程序。但这是不可取的。当你开发你的程序时,在调试模式下做会更聪明。如果它是一个性能驱动的程序,没有什么能阻止你不时地测试 Release 模式,看看运行时是否存在瓶颈。

在发布模式旁边打勾将使 AdaGIDE 在“快速”模式下构建您的程序。如果您定义了不同的目标目录,也会有两个不同的 .exe,因此 AdaGIDE 将运行适当的版本。

【讨论】:

【参考方案3】:

您不能在调试模式下运行发布程序。可以使用调试符号和状态消息编译代码,也可以不使用它们进行编译。如果代码在调试模式下编译,它会运行更慢,占用更多空间;如果在release模式下编译,运行速度会更快,更紧凑。代码一经编译,就无法更改其模式。

我不熟悉 AdaGide 或 GNAT 编译器,但我假设如果您选中“发布模式”框,代码将以发布模式编译。

【讨论】:

以上是关于AdaGide:调试模式和发布模式的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Qt 用户界面在发布模式和调试模式下看起来不同

VS2005 调试模式和发布模式之间的巨大性能影响

在发布模式下调试的缺点

Visual Studio 中的发布模式和调试模式有啥区别? [复制]

发布模式下的断点和调试

为啥在调试模式和运行模式下保留计数不同?