代码之家  ›  专栏  ›  技术社区  ›  yCalleecharan

AdaGide:调试模式和发布模式

  •  1
  • yCalleecharan  · 技术社区  · 16 年前

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

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

    谢谢。。。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Marc C    16 年前

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

    但一般来说。。。

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

    除非你使用了很多断言(pragma Assert),否则在以下方面就不太可能有显著的区别 演出 在调试和发布模式之间。但是,由于保留了符号信息,调试版本的对象文件和可执行文件可能要大得多。

    发布模式可能会禁用运行时检查——这可能会对性能产生明显的影响,但作为名义上的“发布”模式的一部分,这样做几乎总是一个问题 在艾达要做的事。一般来说,禁用运行时检查 只有 当性能要求需要时,仅 哪里 它实质性地影响性能,并且只有在那些代码部分已经被正式证明和/或彻底地测试和验证正确执行之后。

        2
  •  1
  •   Gautier    15 年前

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

    在释放模式旁边打一个复选标记将使AdaGIDE 建造 你的程序下次在“快速”模式。如果您定义了不同的目标目录,那么也将有两个不同的.exe,因此AdaGIDE将 运行 合适的版本。

        3
  •  0
  •   Evan Kroske    16 年前

    不能在调试模式下运行发布程序。代码可以用调试符号和状态消息编译,也可以不用它们编译。如果代码是在调试模式下编译的,它将运行得更慢,占用更多的空间;如果它是在发行版模式下编译的,它将运行得更快,而且更紧凑。一旦代码被编译,它的模式就不能改变。

    我不熟悉AdaGide或GNAT编译器,但我假设如果选中“Release Mode”框,代码将在Release模式下编译。