Debug版本和Release版本的區別

2021-09-27 15:16:51 字數 944 閱讀 1244

debug 通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。

release 稱為發布版本,它往往被編譯器進行了各種優化,使得程式在**大小和執行速度上都是最優的,以便使用者很好地使用。

debug 和 release 的真正區別,在於一組編譯選項。

debug 版本引數

含義/mdd

/mld 或 /mtd 使用 debug runtime library(除錯版本的執行時刻函式庫)

/od關閉優化開關

/d 「_debug」

相當於 #define _debug,開啟編譯除錯**開關(主要針對assert函式)

/zi建立 edit and continue(編輯繼續)資料庫,這樣在除錯過程中如果修改了源**不需重新編譯

gz可以幫助捕獲記憶體錯誤

release 版本引數

含義/md /ml 或 /mt

使用發布版本的執行時刻函式庫

/o1 或 /o2

優化開關,使程式最小或最快

/d 「ndebug」

關閉條件編譯除錯**開關(即不編譯assert函式)

/gf合併重複的字串,並將字串常量放到唯讀記憶體,防止被修改

如圖,有兩種程式,一種優化過的,一種沒優化過的(.exe可執行檔案)。

配置輸出介面:

debug 和 release 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。

release版本和debug版本

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用 release和 debug 有什麼不同 release版稱為發行版,debug版稱為除錯版。debug中可以單步執行 跟蹤等功能,但生成的可執行檔案比較大,執行速度較慢。rele...

debug版本和release版本

執行 debug版本輸出結果 仔細觀察,可以發現release版本的結果中,a與c的值差為4,debug版本的結果中,a和c的結果直差為8.為什麼?四個位元組被優化掉了。32位系統 呼叫函式是通過棧來傳遞引數,我們列印的位址實際上是在棧裡面位置的位址 64位系統 函式傳參絕大多數不同通過棧來傳輸的,...

debug和release版本對比

debug和release,在我看來主要是針對其面向的目標不同的而進行區分的 debug通常稱為除錯版本,通過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何優化,以為開發人員提供強大的應用程式除錯能力。release通常稱為發布版本,是為使用者使用的,一般客戶不允許在發布版本上進行除...