Xcode / Cocoa:调试和发布版本之间有什么区别?

时间:2009-04-17 18:26:56

标签: cocoa xcode debugging

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

2 个答案:

答案 0 :(得分:32)

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

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

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

答案 1 :(得分:0)

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