2010-07-03 94 views
1

如果我理解正确,那么释放模式使程序运行速度快于在调试模式下运行程序。AdaGide:调试模式和释放模式

如果必须先在调试模式下运行程序,然后切换到在释放模式下运行程序,以便释放模式在调试模式下正常运行时进行“跳过”检查?还是能够在开始时直接在发布模式下直接运行程序?

现在谈到AdaGide时,我在Compile下看到了选项调试模式和释放模式。在释放模式下放置复选标记是否需要让AdaGide在发布模式下运行程序?我正在使用GNAT GPL编译器。

非常感谢...

回答

1

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

一般来说,虽然...当至少调试标志(-g)传递到编译器,生成的目标文件将保留符号信息以供调试器使用

调试模式。它可能会传递其他选项,如启用断言的-gnata,以及用于将回调堆栈存储在异常中的binder -E选项。

除非您使用了很多断言(编译指示断言),否则调试和发布模式之间在性能方面可能不存在显着差异。调试版本的目标文件和可执行文件可能会因保留符号信息而显着增大。

发布模式可能会禁用运行时检查 - 这可能会有明显的性能影响,但将其作为名义“发布”模式的一部分将几乎总是非常差 Ada要做的事情。作为一般惯例,只有在性能要求要求时才会禁止运行时检查其中它实质上影响性能,并且只有在正式证明和/或彻底测试并验证了这些代码段以正确执行之后。

优化选项-O2等会对性能产生更大的影响,但最终的数量取决于代码的结构和执行方式。因人而异。

0

您无法在调试模式下运行发布程序。代码可以用调试符号和状态消息编译,也可以在没有它们的情况下编译。如果代码在调试模式下编译,它将运行得更慢并占用更多空间;如果它是在发布模式下编译的,它会很快运行并且更加紧凑。代码编译完成后,其模式不能更改。

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

+0

感谢您的回答。 – yCalleecharan 2010-07-03 17:28:06

1

当然,您可以在开始时直接在发布模式下运行程序。但这不可取。当你开发你的程序时,在Debug模式下执行它更聪明。如果它是一个性能驱动的程序,则不会阻止您经常测试发布模式,以查看运行时是否存在瓶颈。

在释放模式旁放置复选标记将使AdaGIDE 构建下次您的程序处于“快速”模式。如果你已经定义了不同的Target目录,那么也会有两个不同的.exe的,所以AdaGIDE会运行的适当版本。

+0

感谢您的评论。 1投票。 – yCalleecharan 2011-01-12 09:14:56

相关问题