當前位置:首頁 » 編程軟體 » 編譯成debug版本

編譯成debug版本

發布時間: 2024-03-29 09:06:55

① cmake 如何編譯成debug版

回復 7# qfmeal 這些參數是make工具的,--debug 只會讓make在調用編譯器gcc/g++幹活的時候列印更多的東西,讓你看到它詳細的分析和處理指令的過程。

② debug和release兩種編譯方法的區別與聯系

Debug 為調試版本,Release 為發布版本,從開發者和用戶視角看,他們的區別如下:

一、從開發者視角,Debug和Release的區別,主要是編譯器的選項不同,Debug 包含調試信息,並且不作任何優化,便於程序員調試程序。Release 往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以便用戶很好地使用。

Debug 版本 相關參數解釋:
參數 含義
/MDd /MLd 或 /MTd 使用 Debug runtime library(調試版本的運行時刻函數庫)
/Od 關閉優化開關
/D "_DEBUG" 相當於 #define _DEBUG,打開編譯調試代碼開關(主要針對assert函數)
/ZI
創建 Edit and continue(編輯繼續)資料庫,這樣在調試過程中如果修改了源代碼不需重新編譯
GZ 可以幫助捕獲內存錯誤

Release 版本 參數含義
/MD /ML 或 /MT 使用發布版本的運行時刻函數庫
/O1 或 /O2 優化開關,使程序最小或最快
/D "NDEBUG" 關閉條件編譯調試代碼開關(即不編譯assert函數)
/GF 合並重復的字元串,並將字元串常量放到只讀內存,防止被修改

二、使用者視角,我們下載軟體的時候,一般應該選擇Release版。Debug一般比測試版更粗,主要提供給高級測試者反饋修改意見。

③ vs中debug和release版本的區別

vs中的程序有debug和release兩個版本,debug通常稱為調試版本,通過一系列編譯選項的配合,編譯的結果通常包含調試信息,而且不做任何優化,以為開發
人員提供強大的應用程序調試能力。而release通常稱為發布版本,是為用戶使用的,一般客戶不允許在發布版本上進行調試。所以不保存調試信
息,同時,它往往進行了各種優化,以期達到代碼最小和速度最優。為用戶的使用提供便利。
debug程序通常比release程序要慢,尤其是處理視頻方便release要比debug快很多。
debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc,
而release的賦值近似於隨機。
代碼存在錯誤在debug方式下可能會忽略而不被察覺到。debug方式下數組越界也大多不會出錯,在release中就暴露出來了,這個找起來就比較難了。
只有debug版的程序才能設置斷點、單步執行、使用
trace/assert等調試輸出語句。realease不包含任何調試信息,所以體積小、運行速度快。

④ vs中debug和release版本的區別

vs中的程序有debug和release兩個版本。

1、版本不同

Debug通常稱為調試版本,通過一系列編譯選項的配合,編譯的結果通常包含調試信息,而且不做任何優化,以為開發人員提供強大的應用程序調試能力。

而Release通常稱為發布版本,是為用戶使用的,一般客戶不允許在發布版本上進行調試。

2、運行效果不同

debug程序通常比release程序要慢,尤其是處理視頻方便release要比debug快很多。

3、演算法不同

debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc, 而release的賦值近似於隨機。

(4)編譯成debug版本擴展閱讀:

二者的編譯選項。

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

⑤ C語言dev c++,選項release,debug,profiling什麼意思

debug調試,release發行版,profiling性能分析。

作用:

debug可以對軟體進行單步執行,堆棧跟蹤,調試等操作來發現bug。

release如果最終調試後程序沒有明顯bug,可以作為可用的軟體分享給他人使用就可以使用這個選項編譯。

profiling可以對軟體執行過程中的cpu利用率,內存佔有進行分析,也可以用來發現,分析異常,bug。

(5)編譯成debug版本擴展閱讀:

區別

主要是針對其面向的目標不同的而進行區分的。

Debug通常稱為調試版本,通過一系列編譯選項的配合,編譯的結果通常包含調試信息,而且不做任何優化,以為開發人員提供強大的應用程序調試能力。Debug版本包括調試信息,所以要比Release版本大很多。是否需要DLL支持,主要看採用的編譯選項。如果是基於ATL的,則Debug和Release版本對DLL的要求差不多。

而Release通常稱為發布版本,是為用戶使用的,一般客戶不允許在發布版本上進行調試。所以不保存調試信息,同時,它往往進行了各種優化,以期達到代碼最小和速度最優。為用戶的使用提供便利。

⑥ Debug鐗堟湰鍜孯elease鐗堟湰鏈変粈涔堝尯鍒鍛錛

涓銆丏ebug 鍜 Release 緙栬瘧鏂瑰紡鐨勬湰璐ㄥ尯鍒

Debug 閫氬父縐頒負璋冭瘯鐗堟湰錛屽畠鍖呭惈璋冭瘯淇℃伅錛屽苟涓斾笉浣滀換浣曚紭鍖栵紝渚誇簬紼嬪簭鍛樿皟璇曠▼搴忋俁elease 縐頒負鍙戝竷鐗堟湰錛屽畠寰寰鏄榪涜屼簡鍚勭嶄紭鍖栵紝浣垮緱紼嬪簭鍦ㄤ唬鐮佸ぇ灝忓拰榪愯岄熷害涓婇兘鏄鏈浼樼殑錛屼互渚跨敤鎴峰緢濂藉湴浣跨敤銆
Debug 鍜 Release 鐨勭湡姝g樺瘑錛屽湪浜庝竴緇勭紪璇戦夐」銆備笅闈㈠垪鍑轟簡鍒嗗埆閽堝逛簩鑰呯殑閫夐」錛堝綋鐒墮櫎姝や箣澶栬繕鏈夊叾浠栦竴浜涳紝濡/Fd /Fo錛屼絾鍖哄埆騫朵笉閲嶈侊紝閫氬父浠栦滑涔熶笉浼氬紩璧 Release 鐗堥敊璇錛屽湪姝や笉璁ㄨ猴級

Debug 鐗堟湰錛
/MDd /MLd 鎴 /MTd 浣跨敤 Debug runtime library(璋冭瘯鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱)
/Od 鍏抽棴浼樺寲寮鍏
/D "_DEBUG" 鐩稿綋浜 #define _DEBUG,鎵撳紑緙栬瘧璋冭瘯浠g爜寮鍏(涓昏侀拡瀵
assert鍑芥暟)
/ZI 鍒涘緩 Edit and continue(緙栬緫緇х畫)鏁版嵁搴擄紝榪欐牱鍦ㄨ皟璇曡繃
紼嬩腑濡傛灉淇鏀逛簡婧愪唬鐮佷笉闇閲嶆柊緙栬瘧
/GZ 鍙浠ュ府鍔╂崟鑾峰唴瀛橀敊璇
/Gm 鎵撳紑鏈灝忓寲閲嶉摼鎺ュ紑鍏籌紝鍑忓皯閾炬帴鏃墮棿

Release 鐗堟湰錛
/MD /ML 鎴 /MT 浣跨敤鍙戝竷鐗堟湰鐨勮繍琛屾椂鍒誨嚱鏁板簱
/O1 鎴 /O2 浼樺寲寮鍏籌紝浣跨▼搴忔渶灝忔垨鏈蹇
/D "NDEBUG" 鍏抽棴鏉′歡緙栬瘧璋冭瘯浠g爜寮鍏(鍗充笉緙栬瘧assert鍑芥暟)
/GF 鍚堝苟閲嶅嶇殑瀛楃︿覆錛屽苟灝嗗瓧絎︿覆甯擱噺鏀懼埌鍙璇誨唴瀛橈紝闃叉
琚淇鏀

瀹為檯涓婏紝Debug 鍜 Release 騫舵病鏈夋湰璐ㄧ殑鐣岄檺錛屼粬浠鍙鏄涓緇勭紪璇戦夐」鐨勯泦鍚堬紝緙栬瘧鍣ㄥ彧鏄鎸夌収棰勫畾鐨勯夐」琛屽姩銆備簨瀹炰笂錛屾垜浠鐢氳嚦鍙浠ヤ慨鏀硅繖浜涢夐」錛屼粠鑰屽緱鍒頒紭鍖栬繃鐨勮皟璇曠増鏈鎴栨槸甯﹁窡韙璇鍙ョ殑鍙戝竷鐗堟湰銆

浜屻佸摢浜涙儏鍐典笅 Release 鐗堜細鍑洪敊

鏈変簡涓婇潰鐨勪粙緇嶏紝鎴戜滑鍐嶆潵閫愪釜瀵圭収榪欎簺閫夐」鐪嬬湅 Release 鐗堥敊璇鏄鎬庢牱浜х敓鐨

1. Runtime Library錛氶摼鎺ュ摢縐嶈繍琛屾椂鍒誨嚱鏁板簱閫氬父鍙瀵圭▼搴忕殑鎬ц兘浜х敓褰卞搷銆傝皟璇曠増鏈鐨 Runtime Library 鍖呭惈浜嗚皟璇曚俊鎮錛屽苟閲囩敤浜嗕竴浜涗繚鎶ゆ満鍒朵互甯鍔╁彂鐜伴敊璇錛屽洜姝ゆц兘涓嶅傚彂甯冪増鏈銆傜紪璇戝櫒鎻愪緵鐨 Runtime Library 閫氬父寰堢ǔ瀹氾紝涓嶄細閫犳垚 Release 鐗堥敊璇錛涘掓槸鐢變簬 Debug 鐨 Runtime Library 鍔犲己浜嗗歸敊璇鐨勬嫻嬶紝濡傚爢鍐呭瓨鍒嗛厤錛屾湁鏃朵細鍑虹幇 Debug 鏈夐敊浣 Release 姝e父鐨勭幇璞°傚簲褰撴寚鍑虹殑鏄錛屽傛灉 Debug 鏈夐敊錛屽嵆浣 Release 姝e父錛岀▼搴忚偗瀹氭槸鏈 Bug 鐨勶紝鍙涓嶈繃鍙鑳芥槸 Release 鐗堢殑鏌愭¤繍琛屾病鏈夎〃鐜板嚭鏉ヨ屽凡銆

2. 浼樺寲錛氳繖鏄閫犳垚閿欒鐨勪富瑕佸師鍥狅紝鍥犱負鍏抽棴浼樺寲鏃舵簮紼嬪簭鍩烘湰涓婃槸鐩存帴緲昏瘧鐨勶紝鑰屾墦寮浼樺寲鍚庣紪璇戝櫒浼氫綔鍑轟竴緋誨垪鍋囪俱傝繖綾婚敊璇涓昏佹湁浠ヤ笅鍑犵嶏細

(1) 甯ф寚閽(Frame Pointer)鐪佺暐錛堢畝縐 FPO 錛夛細鍦ㄥ嚱鏁拌皟鐢ㄨ繃紼嬩腑錛屾墍鏈夎皟鐢ㄤ俊鎮錛堣繑鍥炲湴鍧銆佸弬鏁幫級浠ュ強鑷鍔ㄥ彉閲忛兘鏄鏀懼湪鏍堜腑鐨勩傝嫢鍑芥暟鐨勫0鏄庝笌瀹炵幇涓嶅悓錛堝弬鏁般佽繑鍥炲箋佽皟鐢ㄦ柟寮忥級錛屽氨浼氫駭鐢熼敊璇鈥斺斺斺斾絾 Debug 鏂瑰紡涓嬶紝鏍堢殑璁塊棶閫氳繃 EBP 瀵勫瓨鍣ㄤ繚瀛樼殑鍦板潃瀹炵幇錛屽傛灉娌℃湁鍙戠敓鏁扮粍瓚婄晫涔嬬被鐨勯敊璇錛堟垨鏄瓚婄晫鈥滀笉澶氣濓級錛屽嚱鏁伴氬父鑳芥e父鎵ц岋紱Release 鏂瑰紡涓嬶紝浼樺寲浼氱渷鐣 EBP 鏍堝熀鍧鎸囬拡錛岃繖鏍烽氳繃涓涓鍏ㄥ矓鎸囬拡璁塊棶鏍堝氨浼氶犳垚榪斿洖鍦板潃閿欒鏄紼嬪簭宕╂簝銆侰++ 鐨勫己綾誨瀷鐗規ц兘媯鏌ュ嚭澶у氭暟榪欐牱鐨勯敊璇錛屼絾濡傛灉鐢ㄤ簡寮哄埗綾誨瀷杞鎹錛屽氨涓嶈屼簡銆備綘鍙浠ュ湪 Release 鐗堟湰涓寮哄埗鍔犲叆 /Oy- 緙栬瘧閫夐」鏉ュ叧鎺夊撫鎸囬拡鐪佺暐錛屼互紜瀹氭槸鍚︽ょ被閿欒銆傛ょ被閿欒閫氬父鏈夛細

鈼 MFC 娑堟伅鍝嶅簲鍑芥暟涔﹀啓閿欒銆傛g『鐨勫簲涓
afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam);
ON_MESSAGE 瀹忓寘鍚寮哄埗綾誨瀷杞鎹銆傞槻姝㈣繖縐嶉敊璇鐨勬柟娉曚箣涓鏄閲嶅畾涔 ON_MESSAGE 瀹忥紝鎶婁笅鍒椾唬鐮佸姞鍒 stdafx.h 涓錛堝湪#include "afxwin.h"涔嬪悗錛,鍑芥暟鍘熷艦閿欒鏃剁紪璇戜細鎶ラ敊
#undef ON_MESSAGE
#define ON_MESSAGE(message, memberFxn) { message, 0, 0, 0, AfxSig_lwl, (AFX_PMSG)(AFX_PMSGW)(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > (&memberFxn) },

(2) volatile 鍨嬪彉閲忥細volatile 鍛婅瘔緙栬瘧鍣ㄨュ彉閲忓彲鑳借紼嬪簭涔嬪栫殑鏈鐭ユ柟寮忎慨鏀癸紙濡傜郴緇熴佸叾浠栬繘紼嬪拰綰跨▼錛夈備紭鍖栫▼搴忎負浜嗕嬌紼嬪簭鎬ц兘鎻愰珮錛屽父鎶婁竴浜涘彉閲忔斁鍦ㄥ瘎瀛樺櫒涓錛堢被浼間簬 register 鍏抽敭瀛楋級錛岃屽叾浠栬繘紼嬪彧鑳藉硅ュ彉閲忔墍鍦ㄧ殑鍐呭瓨榪涜屼慨鏀癸紝鑰屽瘎瀛樺櫒涓鐨勫兼病鍙樸傚傛灉浣犵殑紼嬪簭鏄澶氱嚎紼嬬殑錛屾垨鑰呬綘鍙戠幇鏌愪釜鍙橀噺鐨勫間笌棰勬湡鐨勪笉絎﹁屼綘紜淇″凡姝g『鐨勮劇疆浜嗭紝鍒欏緢鍙鑳介亣鍒拌繖鏍風殑闂棰樸傝繖縐嶉敊璇鏈夋椂浼氳〃鐜頒負紼嬪簭鍦ㄦ渶蹇浼樺寲鍑洪敊鑰屾渶灝忎紭鍖栨e父銆傛妸浣犺や負鍙鐤戠殑鍙橀噺鍔犱笂 volatile 璇曡瘯銆

(3) 鍙橀噺浼樺寲錛氫紭鍖栫▼搴忎細鏍規嵁鍙橀噺鐨勪嬌鐢ㄦ儏鍐典紭鍖栧彉閲忋備緥濡傦紝鍑芥暟涓鏈変竴涓鏈琚浣跨敤鐨勫彉閲忥紝鍦 Debug 鐗堜腑瀹冩湁鍙鑳芥帺鐩栦竴涓鏁扮粍瓚婄晫錛岃屽湪 Release 鐗堜腑錛岃繖涓鍙橀噺寰堝彲鑳借浼樺寲璋冿紝姝ゆ椂鏁扮粍瓚婄晫浼氱牬鍧忔爤涓鏈夌敤鐨勬暟鎹銆傚綋鐒訛紝瀹為檯鐨勬儏鍐典細姣旇繖澶嶆潅寰楀氥備笌姝ゆ湁鍏崇殑閿欒鏈夛細
鈼 闈炴硶璁塊棶錛屽寘鎷鏁扮粍瓚婄晫銆佹寚閽堥敊璇絳夈備緥濡
void fn(void)
{
int i;
i = 1;
int a[4];
{
int j;
j = 1;
}
a[-1] = 1;//褰撶劧閿欒涓嶄細榪欎箞鏄庢樉錛屼緥濡備笅鏍囨槸鍙橀噺
a[4] = 1;
}
j 鉶界劧鍦ㄦ暟緇勮秺鐣屾椂宸插嚭浜嗕綔鐢ㄥ煙錛屼絾鍏剁┖闂村苟鏈鏀跺洖錛屽洜鑰 i 鍜 j 灝變細鎺╃洊瓚婄晫銆傝 Release 鐗堢敱浜 i銆乯 騫舵湭鍏跺緢澶т綔鐢ㄥ彲鑳戒細琚浼樺寲鎺夛紝浠庤屼嬌鏍堣鐮村潖銆

3. _DEBUG 涓 NDEBUG 錛氬綋瀹氫箟浜 _DEBUG 鏃訛紝assert() 鍑芥暟浼氳緙栬瘧錛岃 NDEBUG 鏃朵笉琚緙栬瘧銆傞櫎姝や箣澶栵紝VC++涓榪樻湁涓緋誨垪鏂璦瀹忋傝繖鍖呮嫭錛

ANSI C 鏂璦 void assert(int expression );
C Runtime Lib 鏂璦 _ASSERT( booleanExpression );
_ASSERTE( booleanExpression );
MFC 鏂璦 ASSERT( booleanExpression );
VERIFY( booleanExpression );
ASSERT_VALID( pObject );
ASSERT_KINDOF( classname, pobject );
ATL 鏂璦 ATLASSERT( booleanExpression );
姝ゅ栵紝TRACE() 瀹忕殑緙栬瘧涔熷彈 _DEBUG 鎺у埗銆

鎵鏈夎繖浜涙柇璦閮藉彧鍦 Debug鐗堜腑鎵嶈緙栬瘧錛岃屽湪 Release 鐗堜腑琚蹇界暐銆傚敮涓鐨勪緥澶栨槸 VERIFY() 銆備簨瀹炰笂錛岃繖浜涘畯閮芥槸璋冪敤浜 assert() 鍑芥暟錛屽彧涓嶈繃闄勫姞浜嗕竴浜涗笌搴撴湁鍏崇殑璋冭瘯浠g爜銆傚傛灉浣犲湪榪欎簺瀹忎腑鍔犲叆浜嗕換浣曠▼搴忎唬鐮侊紝鑰屼笉鍙鏄甯冨皵琛ㄨ揪寮忥紙渚嬪傝祴鍊箋佽兘鏀瑰彉鍙橀噺鍊肩殑鍑芥暟璋冪敤 絳夛級錛岄偅涔 Release 鐗堥兘涓嶄細鎵ц岃繖浜涙搷浣滐紝浠庤岄犳垚閿欒銆傚垵瀛﹁呭緢瀹規槗鐘榪欑被閿欒錛屾煡鎵劇殑鏂規硶涔熷緢綆鍗曪紝鍥犱負榪欎簺瀹忛兘宸插湪涓婇潰鍒楀嚭錛屽彧瑕佸埄鐢 VC++ 鐨 Find in Files 鍔熻兘鍦ㄥ伐紼嬫墍鏈夋枃浠朵腑鎵懼埌鐢ㄨ繖浜涘畯鐨勫湴鏂瑰啀涓涓媯鏌ュ嵆鍙銆傚彟澶栵紝鏈変簺楂樻墜鍙鑳借繕浼氬姞鍏 #ifdef _DEBUG 涔嬬被鐨勬潯浠剁紪璇戱紝涔熻佹敞鎰忎竴涓嬨
欏轟究鍊煎緱涓鎻愮殑鏄 VERIFY() 瀹忥紝榪欎釜瀹忓厑璁鎬綘灝嗙▼搴忎唬鐮佹斁鍦ㄥ竷灝旇〃杈懼紡閲屻傝繖涓瀹忛氬父鐢ㄦ潵媯鏌 Windows API 鐨勮繑鍥炲箋傛湁浜涗漢鍙鑳戒負榪欎釜鍘熷洜鑰屾互鐢 VERIFY() 錛屼簨瀹炰笂榪欐槸鍗遍櫓鐨勶紝鍥犱負 VERIFY() 榪濆弽浜嗘柇璦鐨勬濇兂錛屼笉鑳戒嬌紼嬪簭浠g爜鍜岃皟璇曚唬鐮佸畬鍏ㄥ垎紱伙紝鏈緇堝彲鑳戒細甯︽潵寰堝氶夯鐑︺傚洜姝わ紝涓撳朵滑寤鴻灝介噺灝戠敤榪欎釜瀹忋

4. /GZ 閫夐」錛氳繖涓閫夐」浼氬仛浠ヤ笅榪欎簺浜

(1) 鍒濆嬪寲鍐呭瓨鍜屽彉閲忋傚寘鎷鐢 0xCC 鍒濆嬪寲鎵鏈夎嚜鍔ㄥ彉閲忥紝0xCD ( Cleared Data ) 鍒濆嬪寲鍫嗕腑鍒嗛厤鐨勫唴瀛橈紙鍗沖姩鎬佸垎閰嶇殑鍐呭瓨錛屼緥濡 new 錛夛紝0xDD ( Dead Data ) 濉鍏呭凡琚閲婃斁鐨勫爢鍐呭瓨錛堜緥濡 delete 錛夛紝0xFD( deFencde Data ) 鍒濆嬪寲鍙椾繚鎶ょ殑鍐呭瓨錛坉ebug 鐗堝湪鍔ㄦ佸垎閰嶅唴瀛樼殑鍓嶅悗鍔犲叆淇濇姢鍐呭瓨浠ラ槻姝㈣秺鐣岃塊棶錛夛紝鍏朵腑鎷鍙蜂腑鐨勮瘝鏄寰杞寤鴻鐨勫姪璁拌瘝銆傝繖鏍峰仛鐨勫ソ澶勬槸榪欎簺鍊奸兘寰堝ぇ錛屼綔涓烘寚閽堟槸涓嶅彲鑳界殑錛堣屼笖 32 浣嶇郴緇熶腑鎸囬拡寰堝皯鏄濂囨暟鍊礆紝鍦ㄦ湁浜涚郴緇熶腑濂囨暟鐨勬寚閽堜細浜х敓榪愯屾椂閿欒錛夛紝浣滀負鏁板間篃寰堝皯閬囧埌錛岃屼笖榪欎簺鍊間篃寰堝規槗杈ㄨわ紝鍥犳よ繖寰堟湁鍒╀簬鍦 Debug 鐗堜腑鍙戠幇 Release 鐗堟墠浼氶亣鍒扮殑閿欒銆傝佺壒鍒娉ㄦ剰鐨勬槸錛屽緢澶氫漢璁や負緙栬瘧鍣ㄤ細鐢 0 鏉ュ垵濮嬪寲鍙橀噺錛岃繖鏄閿欒鐨勶紙鑰屼笖榪欐牱寰堜笉鍒╀簬鏌ユ壘閿欒錛夈
(2) 閫氳繃鍑芥暟鎸囬拡璋冪敤鍑芥暟鏃訛紝浼氶氳繃媯鏌ユ爤鎸囬拡楠岃瘉鍑芥暟璋冪敤鐨勫尮閰嶆с傦紙闃叉㈠師褰涓嶅尮閰嶏級
(3) 鍑芥暟榪斿洖鍓嶆鏌ユ爤鎸囬拡錛岀『璁ゆ湭琚淇鏀廣傦紙闃叉㈣秺鐣岃塊棶鍜屽師褰涓嶅尮閰嶏紝涓庣浜岄」鍚堝湪涓璧峰彲澶ц嚧妯℃嫙甯ф寚閽堢渷鐣 FPO 錛

閫氬父 /GZ 閫夐」浼氶犳垚 Debug 鐗堝嚭閿欒 Release 鐗堟e父鐨勭幇璞★紝鍥犱負 Release 鐗堜腑鏈鍒濆嬪寲鐨勫彉閲忔槸闅忔満鐨勶紝榪欐湁鍙鑳戒嬌鎸囬拡鎸囧悜涓涓鏈夋晥鍦板潃鑰屾帺鐩栦簡闈炴硶璁塊棶銆

闄ゆや箣澶栵紝/Gm /GF 絳夐夐」閫犳垚閿欒鐨勬儏鍐墊瘮杈冨皯錛岃屼笖浠栦滑鐨勬晥鏋滄樉鑰屾槗瑙侊紝姣旇緝瀹規槗鍙戠幇銆
涓夈佹庢牱鈥滆皟璇曗 Release 鐗堢殑紼嬪簭

閬囧埌 Debug 鎴愬姛浣 Release 澶辮觸錛屾樉鐒舵槸涓浠跺緢娌涓х殑浜嬶紝鑰屼笖寰寰鏃犱粠涓嬫墜銆傚傛灉浣犵湅浜嗕互涓婄殑鍒嗘瀽錛岀粨鍚堥敊璇鐨勫叿浣撹〃鐜幫紝寰堝揩鎵懼嚭浜嗛敊璇錛屽滻鐒跺緢濂姐備絾濡傛灉涓鏃舵壘涓嶅嚭錛屼互涓嬬粰鍑轟簡涓浜涘湪榪欑嶆儏鍐典笅鐨勭瓥鐣ャ

1. 鍓嶉潰宸茬粡鎻愯繃錛孌ebug 鍜 Release 鍙鏄涓緇勭紪璇戦夐」鐨勫樊鍒錛屽疄闄呬笂騫舵病鏈変粈涔堝畾涔夎兘鍖哄垎浜岃呫傛垜浠鍙浠ヤ慨鏀 Release 鐗堢殑緙栬瘧閫夐」鏉ョ緝灝忛敊璇鑼冨洿銆傚備笂鎵榪幫紝鍙浠ユ妸 Release 鐨勯夐」閫愪釜鏀逛負涓庝箣鐩稿圭殑 Debug 閫夐」錛屽 /MD 鏀逛負 /MDd銆/O1 鏀逛負 /Od錛屾垨榪愯屾椂闂翠紭鍖栨敼涓虹▼搴忓ぇ灝忎紭鍖栥傛敞鎰忥紝涓嬈″彧鏀逛竴涓閫夐」錛岀湅鏀瑰摢涓閫夐」鏃墮敊璇娑堝け錛屽啀瀵瑰簲璇ラ夐」鐩稿叧鐨勯敊璇錛岄拡瀵規у湴鏌ユ壘銆傝繖浜涢夐」鍦 Project\Settings... 涓閮藉彲浠ョ洿鎺ラ氳繃鍒楄〃閫夊彇錛岄氬父涓嶈佹墜鍔ㄤ慨鏀廣傜敱浜庝互涓婄殑鍒嗘瀽宸茬浉褰撳叏闈錛岃繖涓鏂規硶鏄鏈鏈夋晥鐨勩

2. 鍦ㄧ紪紼嬭繃紼嬩腑灝辮佹椂甯告敞鎰忔祴璇 Release 鐗堟湰錛屼互鍏嶆渶鍚庝唬鐮佸お澶氾紝鏃墮棿鍙堝緢緔с

3. 鍦 Debug 鐗堜腑浣跨敤 /W4 璀﹀憡綰у埆錛岃繖鏍峰彲浠ヤ粠緙栬瘧鍣ㄨ幏寰楁渶澶ч檺搴︾殑閿欒淇℃伅錛屾瘮濡 if( i =0 )灝變細寮曡搗 /W4 璀﹀憡銆備笉瑕佸拷鐣ヨ繖浜涜﹀憡錛岄氬父榪欐槸浣犵▼搴忎腑鐨 Bug 寮曡搗鐨勩備絾鏈夋椂 /W4 浼氬甫鏉ュ緢澶氬啑浣欎俊鎮錛屽 鏈浣跨敤鐨勫嚱鏁板弬鏁 璀﹀憡錛岃屽緢澶氭秷鎮澶勭悊鍑芥暟閮戒細蹇界暐鏌愪簺鍙傛暟銆傛垜浠鍙浠ョ敤
#progma warning(disable: 4702) //紱佹
//...
#progma warning(default: 4702) //閲嶆柊鍏佽
鏉ユ殏鏃剁佹㈡煇涓璀﹀憡錛屾垨浣跨敤
#progma warning(push, 3) //璁劇疆璀﹀憡綰у埆涓 /W3
//...
#progma warning(pop) //閲嶈句負 /W4
鏉ユ殏鏃舵敼鍙樿﹀憡綰у埆錛屾湁鏃朵綘鍙浠ュ彧鍦ㄨや負鍙鐤戠殑閭d竴閮ㄥ垎浠g爜浣跨敤 /W4銆

4.浣犱篃鍙浠ュ儚 Debug 涓鏍瘋皟璇曚綘鐨 Release 鐗堬紝鍙瑕佸姞鍏ヨ皟璇曠﹀彿銆傚湪 Project/Settings... 涓錛岄変腑 Settings for "Win32 Release"錛岄変腑 C/C++ 鏍囩撅紝Category 閫 General錛孌ebug Info 閫 Program Database銆傚啀鍦 Link 鏍囩 Project options 鏈鍚庡姞涓 "/OPT:REF" (寮曞彿涓嶈佽緭)銆傝繖鏍瘋皟璇曞櫒灝辮兘浣跨敤 pdb 鏂囦歡涓鐨勮皟璇曠﹀彿銆備絾璋冭瘯鏃朵綘浼氬彂鐜版柇鐐瑰緢闅捐劇疆錛屽彉閲忎篃寰堥毦鎵懼埌鈥斺旇繖浜涢兘琚浼樺寲榪囦簡銆備笉榪囦護浜哄簡騫哥殑鏄錛孋all Stack 紿楀彛浠嶇劧宸ヤ綔姝e父錛屽嵆浣垮撫鎸囬拡琚浼樺寲錛屾爤淇℃伅錛堢壒鍒鏄榪斿洖鍦板潃錛変粛鐒惰兘鎵懼埌銆傝繖瀵瑰畾浣嶉敊璇寰堟湁甯鍔┿

熱點內容
安卓ops是什麼文件 發布:2024-11-15 16:32:18 瀏覽:927
雙線性插值演算法c 發布:2024-11-15 16:30:45 瀏覽:866
c語言和vc的區別 發布:2024-11-15 16:19:23 瀏覽:118
linux是免費的嗎 發布:2024-11-15 15:53:44 瀏覽:617
多控存儲 發布:2024-11-15 15:52:42 瀏覽:283
一年級數學分解演算法 發布:2024-11-15 15:41:08 瀏覽:411
安卓個人熱點怎麼分享 發布:2024-11-15 15:40:16 瀏覽:264
墊錢解壓 發布:2024-11-15 15:38:54 瀏覽:336
miui4相當於安卓什麼系統 發布:2024-11-15 15:37:54 瀏覽:709
rc4android 發布:2024-11-15 15:27:25 瀏覽:742