Cocoa應用程序的調試和發佈版本之間有什麼區別? 我知道調試版本包含調試的其他信息,但還有什麼不同?Xcode/Cocoa:調試和發佈版本有什麼區別?
15
A
回答
31
調試版本將包含調試器可以使用的調試符號。發佈版本通常不包含調試符號,所以如果你得到一個崩潰轉儲,你將得到的是一堆十六進制地址,而不是有用的符號名稱。
調試版本沒有通過優化進行編譯(-O0
with gcc),而發佈版本通過優化進行編譯(通常爲-O2
或-O3
)。優化使得調試更加困難。如果你試圖調試一個發佈應用程序,調試器會變得非常困惑,因爲彙編語句不再與HLL語句相匹配,語句得到重新排序,函數得到內聯,循環得到展開等。
調試和發佈版本也定義了不同的預處理器符號,並且某些代碼是基於這些符號進行條件編譯的(例如,數組邊界檢查,斷言等),儘管這是高度依賴於應用程序的。一個典型的例子是#define NDEBUG
的發佈模式,這會導致斷言被刪除。
0
在Tiger中,調試版本是「零關聯」的。這是它僅針對你的環境進行了優化,並不是一個完整的構建。
相關問題
- 1. Qt調試版本和Qt發佈版本有什麼區別?
- 2. 什麼的調試版本和發佈版本,區別意味着和使用
- 3. 「發佈」和「發佈」版本配置有什麼區別?
- 4. .NET中「調試」和「發佈」版本之間的主要區別是什麼?
- 5. ScriptManagers的ScriptMode中調試和發佈有什麼區別?
- 6. 發佈和迭代有什麼區別?
- 7. 快照,候選版本和發行版有什麼區別?
- 8. DLL包含什麼?調試DLL和發佈DLL有什麼區別?
- 9. Sandcastle區分調試版本和發佈版本?
- 10. 調試和編譯有什麼區別?
- 11. Live和IntelliTrace調試有什麼區別?
- 12. 調試和發佈之間的區別
- 13. VSE版本和Vyatta Core版本之間有什麼區別AMI
- 14. 「軟件版本」和「平臺版本」有什麼區別?
- 15. 「運行時版本」和「版本」有什麼區別?
- 16. 免費版本和檢查版本有什麼區別?
- 17. 「瀏覽器發佈」和「程序發佈」有什麼區別?
- 18. C++動態發佈庫和調試庫之間有什麼區別?
- 19. .NET中的調試和發佈二進制文件有什麼區別?
- 20. jquery版本1,版本2和版本3版本有什麼區別?
- 21. Json.Net版本有什麼區別?
- 22. Linux內核版本有什麼區別?
- 23. Qt Creator版本有什麼區別?
- 24. Orientdb版本有什麼區別?
- 25. Asp.net發佈版本與調試版本
- 26. Coldfusion開發者版和企業版有什麼區別?
- 27. 發佈,調試版本和授權Google?
- 28. Visual Studio Express版本,microsoft.net和VS專業版有什麼區別?
- 29. 從版本的工作區和最新版本之間有什麼區別
- 30. MySQL發佈版本之間的區別