回覆列表
  • 1 # 科學史話

    Debug:Debug 通常稱為除錯版本,透過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何最佳化,以為開發人員提供 強大的應用程式除錯能力

    Release:Release通常稱為 釋出版本,是為使用者使用的,一般客戶不允許在釋出版本上進行除錯。所以不儲存除錯資訊,同時,它往往進行了各種最佳化,以期達到程式碼最小和速度最優。為使用者的使用提供便利。

    1.1 在VS中的區別

    Debug 和 Release 並沒有本質的區別,它們只是VS預定義提供的兩組編譯選項的集合,編譯器只是按照預定的選項行動。如果我們願意,我們完全可以把 Debug 和Release 的行為完全顛倒過來。當然也可以提供其他的模式,例如自己定義一組編譯選項,然後命名為 MY_ABC 等。習慣上,我們仍然更願意使用 VC 已經定義好的名稱。

    VS 選項 CONCLUSION:Debug 和 Release 只是兩個編譯的選項而已,是編譯器所要進行工作的一系列指令,它們只是編譯指令的集合的名稱。

    Debug 版本包括除錯資訊,所以要比 Release 版本大很多(可能大數百 K 至數M)。至於是否需要 DLL 支援,主要看你採用的編譯選項。如果是基於 ATL 的,則 Debug 和 Release 版本對 DLL 的要求差不多。如果採用的編譯選項為使用MFC動態庫,則需要MFC42D.DLL等庫支援,而 Release 版本需要MFC42.DLL支援。Release 不對原始碼進行除錯,不考慮 MFC 的診斷宏,使用的是 MFC Release 庫,編譯時對應用程式的速度進行最佳化,而Debug 則正好相反,它允許對原始碼進行除錯,可以定義和使用 MFC 的 診斷宏,採用 MFC Debug 庫,對速度沒有最佳化。

    CONCLUSION:Debug 允許對原始碼進行除錯,而 Release 則不對原始碼進行除錯

    2. gcc 下 release 版本與 debug 版本的控制

    GCC(GNU Compiler Collection,GNU 編譯器套裝),是一套由 GNU 開發的程式語言編譯器。它是一套以 GPL 及 LGPL 許可證所釋出的自由軟體,也是 GNU 計劃的關鍵部分,亦是自由的類 Unix 及蘋果計算機 Mac OSX 作業系統的標準編譯器。GCC(特別是其中的 C 語言編譯器)也常被認為是跨平臺編譯器的事實標準。

    除錯模式編譯

    程式變為:

    釋出模式編譯

    程式變為:

    單獨一個分號不起作用,相當於什麼語句都不執行,直接跳過

  • 中秋節和大豐收的關聯?
  • 虹貓藍兔合璧插曲?