天天看點

Debug和Release差別

VC下Debug和Release差別

最近寫代碼過程中,發現 Debug 下運作正常,Release 下就會出現問題,百思不得其解,而Release 下又無法進行調試,于是隻能采用printf方式逐漸定位到問題所在處,才發現原來是給定的一個數組未初始化,導緻後面處理異常。網上查找了些資料,在這 羅列彙總下,做為備忘~ 

一、Debug 和 Release 的差別 

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

     Debug 和 Release 的真正差別,在于一組編譯選項。 

Debug 版本   

參數       含義   

/MDd /MLd 或 /MTd 使用 Debug runtime library(調試版本的運作時刻函數庫)   

/Od 關閉優化開關   

/D "_DEBUG" 相當于 #define _DEBUG,打開編譯調試代碼開關(主要針對assert函數)   

/ZI   

建立 Edit and continue(編輯繼續)資料庫,這樣在調試過程中如果修改了源代碼不需重新編譯   

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