C Debug模式和Release模式的區別

2022-03-13 04:42:55 字數 562 閱讀 8598

vs中的程式有兩種編譯模式:debug模式和release模式。

debug通常稱為除錯版本,通過一系列編譯選項的配合,編譯結果通常包含除錯資訊,而且不做任何優化,以為開發人員提供強大的應用程式除錯能力。

release通常稱為發布版本,是為使用者使用的,一般客戶不允許在發布版本上進行除錯,所以不儲存除錯資訊,同時它往往進行了各種優化,以期達到**最小和速度最優,為使用者的使用提供便利。

debug跟release在初始化時所做的操作是不同的,debug是將每個位元組都賦值成0xcc,而release的賦值接近於隨機,如果你的程式中的某個變數沒有初始化就被引用,就很有可能出現異常:比如控制變數異常將導致程式流程不一致,用做陣列下標將會使得程式崩潰,所以在宣告變數後馬上對其初始化乙個預設的值是最簡單有效的方法,否則專案大了找都沒有地方找,**存在程式在debug模式下可能會忽略而不被察覺,debug下陣列越界也大多不會有錯,在release中就暴露出來了

只有debug模式下才能設定斷點,單步執行,使用trace/assert等除錯輸出語句,release不包含任何除錯資訊,所以體積小,執行速度快

C debug模式下,VS輸出日誌

最近遇到了乙個很舊的專案需要維護,維護的產品是 windows mobile5.0 6.0的東東,這是05,06年的東西,10多年以前的了,沒辦法,只因為我是做移動端的,廢話不多說,上 吧 在網上看了下,大致是幾種情況 1.outputdebuginfo outputdebugstring 這些方法...

C Debug和Trace 輸出除錯資訊

在 c 語言中允許在程式執行時輸出程式的除錯資訊,類似於使用 console.writeline 的方式向控制台輸出資訊。所謂除錯資訊是程式設計師在程式執行時需要獲取的程式執行的過程,以便程式設計師更好地解決程式 現的問題,這種除錯也被稱為是非中斷除錯。輸出除錯資訊的類儲存在 system.diag...

C Debug模式檢視EFL(標誌暫存器)詳解

在比如使用彙編指令如 adc,sbb等指令時,我們為了心裡那份好奇感就不得不去了解下flag暫存器 efl 裡面的東西。通過二進位制詳細的檢視各標誌位的值。然後這些需要用到標誌暫存器的指令等就一目了然了。迫不及待寫了段測試 來看看其中的秘密 include int main void return ...