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:调试模式和发布模式的主要内容,如果未能解决你的问题,请参考以下文章