回覆列表
-
1 # 使用者6765375850720
-
2 # 使用者6765375850720
vs中的程式有debug和release兩個版本。
1、版本不同
Debug通常稱為除錯版本,透過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何最佳化,以為開發人員提供強大的應用程式除錯能力。
而Release通常稱為釋出版本,是為使用者使用的,一般客戶不允許在釋出版本上進行除錯。
2、執行效果不同
debug程式通常比release程式要慢,尤其是處理影片方便release要比debug快很多。
3、演算法不同
debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc, 而release的賦值近似於隨機。
擴充套件資料:
二者的編譯選項。
Debug 版本:
/Od 關閉最佳化開關
/D "_DEBUG" 相當於 #define _DEBUG,開啟編譯除錯程式碼開關(主要針對assert函式)
/ZI 建立 Edit and continue(編輯繼續)資料庫,這樣在除錯過程中如果修改了原始碼不需重新編譯
/GZ 可以幫助捕獲記憶體錯誤
/Gm 開啟最小化重連結開關,減少連結時間
Release 版本:
/MD /ML 或 /MT 使用釋出版本的執行時刻函式庫
/O1 或 /O2 最佳化開關,使程式 最小或最快
/D "NDEBUG" 關閉條件編譯除錯程式碼開關(即不編譯assert函式)
/GF 合併重複的字串,並將字串常量放到只讀記憶體,防止被修改
可以理解Debug 和 Release 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。可以修改這些選項,從而得到最佳化過的除錯版本或是帶跟蹤語句的釋出版本。
vs中的程式有debug和release兩個版本。
1、版本不同
Debug通常稱為除錯版本,透過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何最佳化,以為開發人員提供強大的應用程式除錯能力。
而Release通常稱為釋出版本,是為使用者使用的,一般客戶不允許在釋出版本上進行除錯。
2、執行效果不同
debug程式通常比release程式要慢,尤其是處理影片方便release要比debug快很多。
3、演算法不同
debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc, 而release的賦值近似於隨機。
擴充套件資料:
二者的編譯選項。
Debug 版本:
/Od 關閉最佳化開關
/D "_DEBUG" 相當於 #define _DEBUG,開啟編譯除錯程式碼開關(主要針對assert函式)
/ZI 建立 Edit and continue(編輯繼續)資料庫,這樣在除錯過程中如果修改了原始碼不需重新編譯
/GZ 可以幫助捕獲記憶體錯誤
/Gm 開啟最小化重連結開關,減少連結時間
Release 版本:
/MD /ML 或 /MT 使用釋出版本的執行時刻函式庫
/O1 或 /O2 最佳化開關,使程式 最小或最快
/D "NDEBUG" 關閉條件編譯除錯程式碼開關(即不編譯assert函式)
/GF 合併重複的字串,並將字串常量放到只讀記憶體,防止被修改
可以理解Debug 和 Release 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。可以修改這些選項,從而得到最佳化過的除錯版本或是帶跟蹤語句的釋出版本。