【问题标题】:Xcode / Cocoa : What are the differences between debug and release builds?Xcode / Cocoa:调试和发布版本之间有什么区别?
【发布时间】:2010-10-20 04:25:11
【问题描述】:

Cocoa 应用程序的调试版本和发布版本之间有什么区别? 我知道调试版本包含用于调试的附加信息,但还有什么不同?

【问题讨论】:

    标签: cocoa xcode debugging


    【解决方案1】:

    调试版本将包含可供调试器使用的调试符号。发布版本通常不包含调试符号,因此如果您获得故障转储,您将得到的只是一堆十六进制地址而不是有用的符号名称。

    调试版本不是使用优化编译的(-O0 使用 gcc),而发布版本是使用优化编译的(通常是 -O2-O3)。优化使调试变得更加困难。如果您尝试调试发布应用程序,调试器会变得非常混乱,因为汇编语句不再与 HLL 语句匹配,语句被重新排序,函数被内联,循环被展开等等。

    调试和发布版本还定义了不同的预处理器符号,并且一些代码基于这些符号有条件地编译(例如,数组边界检查、断言等),尽管这高度依赖于应用程序。一个典型的例子是 #define NDEBUG 用于发布模式,这会导致断言被删除。

    【讨论】:

      【解决方案2】:

      在 Tiger 中,调试版本是“零链接”的。这是它仅针对您的环境进行了优化,并不是真正的完整构建。

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2012-10-07
        • 2012-09-12
        • 2020-05-03
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多