寫下來吧,當你在release版本下無能為力的時候
首先必須明確的是,什麼是release版程式,什麼是debug版程式
debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release稱為發布版本,它往往是進行了各種優化,使得程式在**大小和執行速度上都是最優的,以便使用者很好地使用。
debug 和 release的真正秘密,在於一組編譯選項。下面列出了分別針對二者的選項(當然除此之外還有其他一些,如/fd/fo,但區別並不重要,通常他們也不會引起 release 版錯誤,在此不討論)
debug 版本
引數 含義
/mdd /mld 或 /mtd 使用 debug runtime library (除錯版本的執行時刻函式庫)
/od 關閉優化開關
/d "_debug" 相當於 #define _debug,開啟編譯除錯**開關 (主要針對assert函式)
/zi 建立 edit and continue(編輯繼續)資料庫,這樣在除錯過程中如果修改了源**不需重新編譯
/gz 可以幫助捕獲記憶體錯誤
/gm 開啟最小化重鏈結開關, 減少鏈結時間
release 版本
引數 含義
/md /ml 或 /mt 使用發布版本的執行時刻函式庫
/o1 或 /o2 優化開關,使程式最小或最快
/d "ndebug" 關閉條件編譯除錯**開關 (即不編譯assert函式)
/gf 合併重複的字串, 並將字串常量放到唯讀記憶體, 防止被修改
實際上,debug 和 release並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。事實上,我們甚至可以修改這些選項,從而得到優化過的除錯版本或是帶跟蹤語句的發布版本。
ok,知道了這些,誰還會說release版本不能除錯?
只需要設定相應編譯環境,release同樣可以像debug版本設定斷點,檢視引數。
步驟如下:
1、在project settings裡選settings for為allconfigurations。
2、在c/c++標籤中,debug info 選 programdatabase。
3、在link 標籤中,category選 debug,選中debug info核取方塊和microsoft format。
現在就可以像在debug
版本中那樣設定斷點進行測試了,但是記住,release版本由於**優化,有些變數是觀察不到的,行的執行順序可能也會不同。
VC如何除錯release版本
project setting c c general頁 optimizations中選擇disable debug debug info中選擇program database or program database for edit and conitnue project setting lin...
小程式(2)vc 6 0下release除錯
寫下來吧,當你在release版本下無能為力的時候 首先必須明確的是,什麼是release版程式,什麼是debug版程式 debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release稱為發布版本,它往往是進行了各種優化,使得程式在 大小和執行速度上都是最優的,...
VC 6 0設定Release模式可除錯的方法
vc6編譯選項的含義 debug 模式 mdd mld 或 mtd 使用 debug runtime library 除錯版本的執行時刻函式庫 od 關閉優化開關 d debug 相當於 define debug,開啟編譯除錯 開關 主要針對assert函式 zi 建立 edit and conti...