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通常稱為發布版本,是為使用者使用的,一般客戶不允許在發布版本上進行除...