1、問題闡述
在VC工程比較大時,開發(fā)的軟件通常會出現(xiàn)在Debug狀態(tài)下能夠正常運行,而在Release狀態(tài)下無法正常運行的情況。這種錯誤的檢查的前提是要弄清二者之間本質(zhì)的區(qū)別。
2、Debug和Release的區(qū)別
①Debug版本包含了大量的調(diào)試信息,所以形成的可執(zhí)行文件要比Release版本大。
②二者根據(jù)選擇的編譯選項不同,需要的支持庫也不同,如果是MFC的工程,則需要MFC42D.dll等庫支持,而Release版本則需要MFC42.dll的支持。
③Release Build不對源代碼進行調(diào)試,不考慮MFC的診斷宏,使用的是MFC Release庫,編譯是對應(yīng)用程序的速度進行優(yōu)化,而Debug Build則正好相反,它允許對源代碼進行調(diào)試,可以定義和使用MFC的診斷宏,采用MFC Debug庫,對速度沒有優(yōu)化。
以上從現(xiàn)象上介紹了Debug版本和Release版本之間的區(qū)別,它們的本質(zhì)區(qū)別在于一組編譯的開關(guān)量的設(shè)置,編譯時開關(guān)量如表2-2和表2-3所示
表2-2 Debug版本編譯選項表
編譯選項
|
設(shè)置
|
/MDd
|
與MSVCRTD.lib調(diào)試庫鏈接
|
/MLd
|
與LIBCD.lib調(diào)試庫鏈接
|
/MTd
|
與LIBCMTD.lib調(diào)試庫鏈接
|
/Od
|
關(guān)閉優(yōu)化開關(guān)
|
/D
|
打開編譯器調(diào)試開關(guān)
|
/ZI
|
創(chuàng)建Edit and continue(編輯繼續(xù))數(shù)據(jù)庫,這樣在調(diào)試過程中如果改了源代碼不需要重新編譯
|
/GZ
|
可以幫助捕獲內(nèi)存錯誤
|
/Gm
|
打開最小化重鏈接開關(guān),減少鏈接時
|
表2-3 Release版本的編譯選項表
編譯選項
|
設(shè)置
|
/MD
|
與MSVCRT.lib鏈接
|
/ML
|
與LIBC.lib鏈接
|
/MT
|
與LIBCMT.lib鏈接
|
/o1
|
最小化空間
|
/o2
|
最快速度
|
/D
|
設(shè)置為NDEBUG
|
/GF
|
啟用字符串池
|
如果還想獲得更多關(guān)于《Visual C++代碼參考與技巧大全》的內(nèi)容,可點擊下面網(wǎng)址,http://www.shnenglu.com/kangnixi/archive/2010/01/13/105591.html