與調試有關的編譯和連結選項

來源:互聯網
上載者:User

跟蹤錯誤有用的編譯選項:

/W4          用最高的警告層次編譯(所有版本均使用)

/D “_DEBUG”  開啟條件編譯調試開關,即定義了 _DEBUG(僅調試版使用)

/GZ          檢查包括未被初始化的自動(局部)變數、堆棧錯誤、不正確的函數原型

(僅調試版使用)

/Od           關閉最佳化開關,使得代碼更易讀懂(僅調試版使用)

/GF          消除重複的字串,並將字串放到唯讀記憶體中,避免它們被錯誤地修改。

當/ZI選項開啟時,該選項被自動開啟(僅在發布版使用)

/ZI           用偵錯符號和編輯繼續資訊建立程式資料庫,從而減少調試周期的時間和

所花費精力(僅在調試版中使用)

/Zi            建立偵錯符號的程式資料庫(僅在發布版使用)

 

 

調試錯誤有用的連結選項:

/MAP:”Debug/ProgramName.map”    建立一個對應檔

/MAPINFO:LINES                             在對應檔中添加行號資訊

 

針對調試版本的編譯選項:

/MDd,/MLd,/MTd         使用調試版本的運行時刻函數庫

/Od                             

/D “_DEBUG”

/ZI

/GZ

/GM                             開啟最小化重新連結開關,減少連結時間

 

 

針對發布版本的編譯選項:

/MD,/ML,/MT                     使用發布版本的運行時刻函數庫

/O1或/O2                    開啟最佳化開關,使得程式會最小或速度最快

/D “NDEBUG”              關閉條件編譯調試代碼開關

/GF

 

 

你可以選擇任何一組選擇,所以你可以有一個帶偵錯符號、跟蹤語句、Assert 陳述式的

發布版本,只要你選擇了這些選項。

 

調試版本和發布版本的運行時刻函數庫的區別:

調試版本的運行時刻函數庫有以下幾個特性:

l         其對記憶體配置作了跟蹤

l         在剛分配的記憶體裡寫上0xCC,有助於發現使用未被初始化資料的錯誤

l         在被釋放的記憶體裡寫上0xCD

l         在緩衝區的兩邊分配了四位元組的保護資料,並用0xFD作初始化,來檢查寫記憶體

的上溢出和下溢出。

 

 

變數最佳化:

最佳化會去掉不必要的變數以及重複使用的變數,可能會最佳化而儲存在寄存器中。

這可能會隱藏錯誤,特別在多線程中。volatile關鍵字告訴編譯器不能對該變數最佳化。事

實上調試版本中的所有變數都是volatile的。

 

內嵌函式

VC在調試版中預設關掉內聯,具體地說,內聯是被/Ob0編譯選項關掉的。對於發布版,

內聯能被/O1(大小最小)、/O2(速度最小)、/Ox(完全最佳化)開啟。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.