cocoa - Xcode/ cocoa : What are the differences between debug and release builds?

标签 cocoa xcode debugging

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

最佳答案

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

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

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

关于cocoa - Xcode/ cocoa : What are the differences between debug and release builds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761628/

相关文章:

ios - 架构 armv7 的 undefined symbol : duplicate files

objective-c - IBAction 不会拖到 UISearchBar

java - 如何在返回 Futures 的 Java ExecutorService 中调试 Callable

java - java中从数据库中获取值

objective-c - 无法从 -mouseDown :event 获取有用的位置

objective-c - 有没有办法改变Xcode中的动态库搜索路径

xcode - 使用按钮将行添加到 TableView

c# - Visual Studio 调试器不会进入未使用的变量声明

objective-c - NSView 的 -layout 方法的覆盖到底应该如何工作?

objective-c - 为什么释放后要设置为nil?