Debug 和 Release 編譯方式的本質區別

2022-05-01 04:39:09 字數 1161 閱讀 5761

debug

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

release

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

debug

和release

的真正秘密,在於一組編譯選項。下面列出了分別針對二者的選項(當然除此之外還有其他一些,如

/fd /fo

,但區別並不重要,通常他們也不會引起

release

版錯誤,在此不討論)

debug

版本:/mdd /mld

或/mtd  

使用debug runtime library(

除錯版本的執行時刻函式庫

) /od                

關閉優化開關

/d "_debug"        

相當於#define _debug,

開啟編譯除錯**開關

(主要針對

assert

函式)

/zi                

建立edit and continue(

編輯繼續

)資料庫,這樣在除錯過程中如果修改了源**不需重新編譯

/gz                

可以幫助捕獲記憶體錯誤

/gm                

開啟最小化重鏈結開關,減少鏈結時間

release

版本:/md /ml

或/mt     

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

/o1

或/o2         

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

/d "ndebug"        

關閉條件編譯除錯**開關

(即不編譯

assert

函式)

/gf                

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

實際上,

debug

和release

並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。事實上,我們甚至可以修改這些選項,從而得到優化過的除錯版本或是帶跟蹤語句的發布版本。

Debug 和 Release 編譯方式的本質區別

debug 通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release 稱為發布版本,它往往是進行了各種優化,使得程式在 大小和執行速度上都是最優的,以便使用者很好地使用。debug 和 release 的真正秘密,在於一組編譯選項。下面列出了分別針對二者的選項 當然...

DEBUG和RELEASE 的區別

debug和release 版本差異及除錯相關問題 記憶體分配問題 1.變數未初始化。下面的程式在debug中執行的很好。thing search thing something bool found for int i 0 i whatever.getsize i found it if foun...

debug和release版本對比

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