回覆列表
  • 1 # 使用者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 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。可以修改這些選項,從而得到最佳化過的除錯版本或是帶跟蹤語句的釋出版本。

  • 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 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。可以修改這些選項,從而得到最佳化過的除錯版本或是帶跟蹤語句的釋出版本。

  • 中秋節和大豐收的關聯?
  • 感性的水瓶和理性的雙子能走到一起嗎?