天天看點

debug VS release

   可以這麼說:release版本取掉了debug資訊,進行了優化。

   比如ASSERT(***)這***裡不光是判斷,如果還有其他建立之類的操作,到了release版,被忽略後,也就容易帶來問題。舉個例子:int a;

debug時a值恒定,總為cdcdcdcdrelease時a值不定,為當時記憶體值這時你在使用a時就會引起結果的不一緻,甚至導緻溢出!是以對變量初始化尤其是對指針,數組變量初始化是一個良好的習慣!debug與release的不同大多是因為程式代碼寫的不規範,不嚴謹而造成的。

 關于Debug和Release之本質差別的讨論~~(主要針對VC6.0和VS2003.net編譯工具而言)

一、Debug 和 Release 編譯方式的本質差別

Debug通常稱為調試版本,它包含調試資訊,并且不作任何優化,便于程式員調試程式。Release稱為釋出版本,它往往是進行了各種優化,使得程式在代碼大小和運作速度上都是最優的,以便使用者很好地使用。

Debug

和Release的真正秘密,在于一組編譯選項。下面列出了分别針對二者的選項(當然除此之外還有其他一些,如/Fd/Fo,但差別并不重要,通常他們也不會引起

Release版錯誤,在此不讨論)

Debug 版本:

 /MDd /MLd

或/MTd   使用

Debug runtimelibrary(調試版本的運作時刻函數庫)

 /Od                關閉優化開關

 /D"_DEBUG"        相當于

#define_DEBUG,打開編譯調試代碼開關(主要針對

                    assert函數)

 /ZI                建立

Edit andcontinue(編輯繼續)資料庫,這樣在調試過

                    程中如果修改了源代碼不需重新編譯