releaseºÍdebug°æ±¾(±àÒëÆ÷debugºÍrelease)
¹ØÓÚReleaseºÍDebug°æ±¾£¨±àÒëÆ÷DebugºÍRelease£©µÄÐÅÏ¢ÕûÀí
ÔÚÎÒÃǽøÐбàÒëʱ£¬´æÔÚÁ½ÖÖ±àÒëÑ¡ÏDebugºÍRelease¡£ÕâÁ½ÖÖ±àÒëÑ¡ÏîÔÚ±àÒëÆ÷ÖеÄ×éºÏ¾ö¶¨ÁËÎÒÃǵõ½µÄ³ÌÐò°æ±¾Debug°æ±¾»òRelease°æ±¾¡£ËüÃǵÄÖ÷񻂿±ðÔÚÓÚ±àÒëʱµÄÓÅ»¯³Ì¶ÈºÍ°üº¬µÄÐÅÏ¢¡£
Ò»¡¢»ù±¾¸ÅÄî
Debug°æ±¾Ö÷ÒªÓÃÓÚ¿ª·¢ºÍµ÷ÊԽ׶Σ¬°üº¬Á˷ḻµÄµ÷ÊÔÐÅÏ¢£¬ÎļþÌå»ýÏà¶Ô½Ï´ó¡£¶øRelease°æ±¾ÔòÓÃÓÚ·¢²¼£¬¾¹ýÁËÓÅ»¯£¬ÎļþÌå»ý¸üС£¬ÔËÐÐЧÂʸü¸ß¡£
¶þ¡¢±àÒëÑ¡ÏîÏê½â
1. Debug°æ±¾³£ÓõıàÒëÑ¡Ïî°üÀ¨£ºÊ¹Óõ÷ÊÔÔËÐÐʱ¿â/¿ªÆôÓÅ»¯¿ª¹Ø£¨/Od¹Ø±ÕÓÅ»¯¿ª¹Ø£©/´ò¿ª±àÒëµ÷ÊÔ´úÂ뿪¹Ø£¨Ö÷ÒªÕë¶Ôassertº¯Êý£©/´´½¨±à¼¼ÌÐøÊý¾Ý¿âµÈ¡£ÕâЩѡÏî¿ÉÒÔ°ïÖúÎÒÃÇÔÚ¿ª·¢¹ý³ÌÖнøÐдíÎóµÄ¶¨Î»ºÍÅŲ顣
2. Release°æ±¾³£ÓõıàÒëÑ¡Ïî°üÀ¨£ºÊ¹Ó÷¢²¼°æ±¾µÄÔËÐÐʱ¿â/¿ªÆôÓÅ»¯¿ª¹Ø£¬Ê¹³ÌÐò×îС»ò×î¿ì/¹Ø±ÕÌõ¼þ±àÒëµ÷ÊÔ´úÂ뿪¹ØµÈ¡£ÕâЩѡÏîÖ¼ÔÚÌá¸ß³ÌÐòµÄÔËÐÐЧÂÊ¡£
Èý¡¢²îÒìÓëϸ½Ú
1. Á´½Óµ½ÄĸöÔËÐÐʱ¿âÖ÷ÒªÓ°Ïì³ÌÐòµÄÐÔÄÜ¡£Debug°æ±¾µÄÔËÐÐʱ¿â°üº¬µ÷ÊÔÐÅÏ¢£¬²¢²ÉÓÃÁËijЩ±£»¤»úÖÆÀ´°ïÖú·¢ÏÖ´íÎ󣬵«ÆäÐÔÄÜ¿ÉÄܲ»ÈçRelease°æ±¾¡£ÐèҪעÒâµÄÊÇ£¬¼´Ê¹Debug°æ±¾³öÏÖ´íÎó¶øRelease°æ±¾ÔËÐÐÕý³££¬³ÌÐòÖÐÒ²¿ÉÄÜ´æÔÚBug¡£
2. ÓÅ»¯ÊDzúÉú´íÎóµÄÖ÷ÒªÔÒòÖ®Ò»¡£ÔÚ¿ªÆôÓÅ»¯Ê±£¬±àÒëÆ÷»á×ö³öһϵÁмÙÉ衣һЩ³£¼ûµÄ´íÎó°üÀ¨¿ò¼ÜÖ¸ÕëÊ¡ÂÔ£¨FPO£©¡¢volatile±äÁ¿Òý·¢µÄ´íÎóÒÔ¼°±äÁ¿ÓÅ»¯µ¼ÖµĴíÎóµÈ¡£ÎªÁ˼ì²âÕâЩ´íÎó£¬ÎÒÃÇ¿ÉÒÔÔÚ±àÒëÑ¡ÏîÖнøÐÐÏàÓ¦µÄÉèÖá£
ËÄ¡¢DebugºÍRelease°æ±¾ÔÚʵ¼ÊÓ¦ÓÃÖеIJîÒì
Debug°æ±¾Ö÷ÒªÓÃÓÚ¿ª·¢ºÍµ÷ÊÔ£¬°üº¬Á˷ḻµÄµ÷ÊÔÐÅÏ¢£¬±ãÓÚ¿ª·¢Õß¶¨Î»ÎÊÌâ¡£¶øRelease°æ±¾ÔòÓÃÓÚ·¢²¼£¬¾¹ýÓÅ»¯£¬Ìá¸ßÁËÔËÐÐЧÂÊ¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÎÒÃÇÐèÒª¸ù¾Ýʵ¼ÊÐèÇóÑ¡ÔñºÏÊʵİ汾¡£¶ÔÓÚijЩ¸´ÔÓµÄÎÊÌ⣬ÎÒÃÇ¿ÉÄÜÐèÒª½áºÏʹÓÃÁ½¸ö°æ±¾½øÐÐÅŲ顣
¹ØÓÚÄÇЩÒþ²ØÔÚ´úÂëÖеĴíÎó
ÎÒÃÇʱ³£»áÓöµ½Ò»Ð©¿´ËƲ»ÆðÑÛ£¬µ«È´×ãÒÔÒý·¢·³µÄ±à³Ì´íÎó¡£±ÈÈç·Ç·¨·ÃÎÊ£¬ÕâÆäÖаüº¬ÁËÊý×éÔ½½ç¡¢Ö¸Õë´íÎóµÈÎÊÌâ¡£ÈÃÎÒÃÇÒÔÒ»¸ö¼òµ¥µÄÀý×ÓÀ´ËµÃ÷¡£
ÏëÏóÒ»ÏÂÕâÑùµÄ³¡¾°£ºÄ㶨ÒåÁËÒ»¸öº¯Êý£¬ÆäÖаüº¬Ò»¸öÊý×éºÍһЩ±äÁ¿²Ù×÷¡£ÔÚÕâ¶Î´úÂëÖУ¬¾¡¹Ü¿´ËÆÒ»Çж¼ÔËÐеþ®¾®ÓÐÌõ£¬µ«Êµ¼ÊÉÏÒþ²Ø×ÅһЩÄÑÒÔ²ì¾õµÄ´íÎó¡£±ÈÈ磬Äã¿ÉÄܻᶨÒåÒ»¸öÊý×é²¢ÊÔͼ·ÃÎÊÒ»¸ö³¬³öÆä·¶Î§µÄÔªËØ¡£ËäÈ»´íÎó¿ÉÄܲ»»áÔÚµ÷ÊÔ°æÖÐÁ¢¿ÌÏÔÏÖ£¬µ«ÔÚ·¢²¼°æÖÐÈ´¿ÉÄÜÒý·¢ÑÏÖØµÄÕ»ÆÆ»µÎÊÌâ¡£
¾ÍÏñÕâ¸öʾÀý£ºÄãÓÐÒ»¸ö×Ö·û»º³åÇøºÍÒ»¸ö¼ÆÊýÆ÷¡£µ±ÄãÊÔͼ½«Ò»¸ö¹ý³¤µÄ×Ö·û´®¸´ÖƵ½»º³åÇøÊ±£¬Èç¹ûÔÚµ÷ÊÔ°æÖУ¬¿ÉÄܻῴµ½»º³åÇøµÄNULLÖµ¸²¸ÇÁ˼ÆÊýÆ÷µÄ¸ßλ¡£µ«ÔÚ·¢²¼°æÖУ¬ÓÉÓÚÓÅ»¯£¬¼ÆÊýÆ÷¿ÉÄܱ»´æ·ÅÔڼĴæÆ÷ÖУ¬ÕâʱNULLÖµ¾Í¿ÉÄܸ²¸Ç»º³åÇøµÄÏ·½¿Õ¼ä£¬Ò²¾ÍÊǺ¯ÊýµÄ·µ»ØµØÖ·£¬´Ó¶øµ¼Ö·ÃÎÊ´íÎó¡£
ÏÖÔÚÎÒÃÇÀ´Ì¸Ì¸Ò»¸ö·Ç³£ÖØÒªµÄÖ÷Ìâ¹ØÓÚ_DEBUGºÍNDEBUGºê¡£µ±¶¨ÒåÁË_DEBUGʱ£¬assert()º¯Êý»á±»±àÒë¡£¶øµ±¶¨ÒåNDEBUGʱ£¬ËüÔò²»»á±»±àÒë¡£³ý´ËÖ®Í⣬VC++Öл¹°üº¬Ò»ÏµÁжÏÑԺ꣬ÈçANSI C¶ÏÑÔ¡¢C Runtime Lib¶ÏÑÔ¡¢MFC¶ÏÑÔ¡¢ATL¶ÏÑԵȡ£ËùÓÐÕâЩ¶ÏÑÔ¶¼Ö»ÔÚµ÷ÊÔ°æÖвű»±àÒ룬¶øÔÚ·¢²¼°æÖб»ºöÂÔ¡£ÕâÆäÖÐΨһÀýÍâµÄÊÇVERIFY()ºê¡£
ÕâЩºêµÄ¶¨Òå¿ÉÄÜ¿´ÆðÀ´ÓÐЩ¸´ÔÓ£¬µ«Êµ¼ÊÉÏËüÃǵĺËÐÄ˼ÏëÊÇÒ»ÑùµÄ£ºÔÚµ÷ÊÔ¹ý³ÌÖаïÖúÎÒÃǼì²é³ÌÐòµÄÔËÐÐ״̬¡£Èç¹ûÔÚʹÓÃÕâЩºêʱ¼ÓÈëÁ˷Dz¼¶û±í´ïʽµÄ³ÌÐò´úÂ룬ÄÇôÔÚ·¢²¼°æÖÐÕâЩ²Ù×÷¾Í²»»á±»Ö´ÐУ¬¿ÉÄܻᵼÖ´íÎó¡£ÌرðÊdzõѧÕߣ¬ºÜÈÝÒ×ÔÚÕâ·½Ãæ·¸´í¡£²éÕÒÕâÀà´íÎóµÄ·½·¨Ò²ºÜ¼òµ¥£¬Ö»ÐèÀûÓÃVC++µÄFind in Files¹¦Äܼ´¿É¡£
˵µ½ASSERTºêµÄ¶¨Ò壬Ëüʵ¼ÊÉÏ»áÔÚÌØ¶¨Ìõ¼þÏÂÖ´ÐÐijЩ²Ù×÷¡£Èç¹ûÄãÔÚÕâЩÓï¾äÖмÓÈëÁ˳ÌÐòÖбØÐëµÄ´úÂ룬±ÈÈçÔÚ¶ÏÑÔÓï¾äÖÐΪ±äÁ¿·ÖÅä¿Õ¼ä²¢µ÷Óú¯Êý£¬ÄÇôÔÚ·¢²¼°æÖпÉÄÜ»á³öÏÖÎÊÌâ¡£Õâʱ£¬Äã¿ÉÒÔʹÓÃVERIFYºêÀ´½â¾öÎÊÌâ¡£µ«ÊÇÐèҪעÒâµÄÊÇ£¬VERIFY()ºêµÄʹÓÃÊÇÓÐÕùÒéµÄ£¬ÒòΪËüÔÊÐí½«³ÌÐò´úÂë·ÅÔÚ²¼¶û±í´ïʽÖУ¬Õâ¿ÉÄÜ»áÎ¥·´¶ÏÑÔµÄ˼Ï룬ʹ³ÌÐò´úÂëºÍµ÷ÊÔ´úÂëÎÞ·¨ÍêÈ«·ÖÀ롣ר¼Ò½¨ÒéÎÒÃÇÓ¦¾¡Á¿ÉÙÓÃVERIFY()ºê¡£
³ýÁËÉÏÊöÄÚÈÝ£¬»¹ÓÐÒ»¸öÖØÒªµÄÑ¡ÏîÐèÒª¹Ø×¢GZÑ¡Ïî¡£Õâ¸öÑ¡ÏîÓëÄÚ´æºÍ±äÁ¿µÄ³õʼ»¯Óйء£ÕýÈ·µÄʹÓÿÉÒÔ´ó´óÌá¸ß³ÌÐòµÄÎȶ¨ÐԺͰ²È«ÐÔ¡£µ«ÊǹØÓÚËüµÄ¾ßÌåϸ½ÚºÍ²Ù×÷£¬ÐèÒªÎÒÃÇÔÚʵ¼Ê±à³Ì¹ý³ÌÖÐ×Ðϸ°ÑÎպ͡£
±à³ÌÊÀ½ç³äÂúÁ˸÷ÖÖÌôÕ½ºÍδ֪£¬Ã¿Ò»¸öϸ½Ú¶¼¿ÉÄÜÒþ²Ø×ÅÉî²ã´ÎµÄÔÀíºÍ˼Ïë¡£Ö»Óв»¶ÏѧϰºÍʵ¼ù£¬²ÅÄÜÖð½¥ÕÆÎÕ±à³ÌµÄ¾«Ë裬±àд³ö¸ü¼ÓÎȶ¨¡¢¸ßЧµÄ´úÂë¡£¹ØÓÚ´úÂëÖеijõʼ»¯ÎÊÌ⣺ÉîÈëDebugÓëRelease°æ±¾Ö®¼äµÄ²îÒì
ÔÚÈí¼þ¿ª·¢ÖУ¬ÎÒÃdz£³£ÔÚDebug°æ±¾ÓëRelease°æ±¾Ö®¼äÓöµ½¸÷ÖÖ΢ÃîµÄ²îÒì¡£ÕâÆäÖУ¬±äÁ¿µÄ³õʼ»¯ÎÊÌâÓÈΪͻ³ö¡£ÈÃÎÒÃÇÉîÈëΪºÎ³õʼ»¯ËùÓÐ×Ô¶¯±äÁ¿Îª0xCC¡¢¶ÑÄÚ´æÎª0xCD£¨ÒÑÇå³ýÊý¾Ý£©¡¢ÒÑÊͷŵĶÑÄÚ´æÎª0xDD£¨ËÀÊý¾Ý£©ÒÔ¼°Êܱ£»¤µÄÄÚ´æÎª0xFD£¨·ÀÓùÊý¾Ý£©ÊÇÈç´ËÖØÒª¡£
ÕâÐ©ÌØ¶¨µÄ³õʼ»¯ÖµÑ¡ÔñÓÐÆä¶ÀÌØµÄÓÅÊÆ¡£ËüÃǶ¼ÊǽϴóµÄÊýÖµ£¬²»Ì«¿ÉÄÜ×÷ΪָÕëÖµ³öÏÖ£¨ÓÈÆäÔÚ32λϵͳÖУ¬Ö¸ÕëºÜÉÙÊÇÆæÊýÖµ£©¡£ÕâЩֵÔÚʵ¼ÊÊýÖµÖÐÒ²½ÏΪº±¼û£¬¸üÖØÒªµÄÊÇ£¬ËüÃǷdz£ÈÝÒ×ʶ±ð¡£ÕâÑùµÄÉè¼Æ¼«´óµØÓÐÖúÓÚ¿ª·¢ÕßÔÚDebug°æÖз¢ÏÖ½öÔÚRelease°æÖгöÏֵĴíÎó¡£
Ðí¶à¿ª·¢Õß¿ÉÄÜÎóÒÔΪ±àÒëÆ÷ĬÈÏ»áÓÃ0À´³õʼ»¯±äÁ¿¡£µ«Êµ¼ÊÉÏ£¬ÕâÖÖ×ö·¨²¢²»×ÜÊǿɿ¿£¬ÇÒ¿ÉÄÜÑÚ¸ÇһЩDZÔڵĴíÎó¡£ÎªÁËÈ·±£´úÂëµÄÎȶ¨ÐԺͿÉά»¤ÐÔ£¬Ã÷È·µÄ³õʼ»¯²ßÂÔÖÁ¹ØÖØÒª¡£
½ÓÏÂÀ´£¬ÈÃÎÒÃÇ¿´Ò»¶Î¿ÉÄÜÔÚDebug°æ±¾ÖÐÔËÐÐÁ¼ºÃ£¬µ«ÔÚRelease°æ±¾ÖгöÎÊÌâµÄ´úÂë¡£
ÔÚDebug°æ±¾ÖУ¬±äÁ¿¡°found¡±¿ÉÄÜĬÈϱ»³õʼ»¯ÎªFALSE¡£µ«ÔÚRelease°æ±¾ÖУ¬Èç¹ûûÓÐÃ÷È·³õʼ»¯£¬¸Ã±äÁ¿¿ÉÄܺ¬ÓÐÈκÎËæ»úÖµ¡£ÕâÖÖ²îÒì¿ÉÄܵ¼ÖÂÑ»·Âß¼³öÏÖ²»¿ÉÔ¤²âµÄÐÐΪ¡£ÀýÈ磺
```cpp
thingsearch(thingsomething);
BOOL found;
for(int i = 0; i < whatever.GetSize(); i++){
if(whatever[i]->field == something->field){
// foundit
found = TRUE;
break;
}
// foundit ÊÇÒ»¸ö×¢ÊÍ»ò·Ö¸ô·û£¬²»ÊÇÓÐЧµÄ´úÂë
}
```
ÔÚÕâ¶Î´úÂëÖУ¬¡°found¡±±äÁ¿ÔÚûÓÐÃ÷È·³õʼ»¯µÄÇé¿öϱ»Ê¹Óá£ÔÚDebug°æ±¾ÖУ¬ÓÉÓÚijЩÒþÐԵijõʼ»¯ÐÐΪ£¬´úÂë¿ÉÄÜÕý³£ÔËÐС£µ«ÔÚRelease°æ±¾ÖУ¬ÓÉÓÚȱ·¦ÕâÖÖ³õʼ»¯£¬¿ÉÄܵ¼ÖÂÂß¼´íÎó»ò²»È·¶¨µÄÐÐΪ¡£ÎªÁ˱ÜÃâÕâÖÖÇé¿ö£¬¿ª·¢ÕßӦȷ±£ËùÓбäÁ¿ÔÚʹÓÃǰ¶¼±»ÕýÈ·³õʼ»¯¡£Õâ²»½öÓÐÖúÓÚÌá¸ß´úÂëµÄ¿É¶ÁÐԺͿÉά»¤ÐÔ£¬»¹ÄܼõÉÙDZÔڵĴíÎóºÍ·çÏÕ¡£
ÉîÈëÀí½âDebugºÍRelease°æ±¾Ö®¼äµÄ²îÒ죬ÓÈÆäÊDZäÁ¿³õʼ»¯ÎÊÌ⣬¶ÔÓÚÈ·±£Èí¼þµÄÎȶ¨ÐԺͿɿ¿ÐÔÖÁ¹ØÖØÒª¡£Ã÷È·µÄ³õʼ»¯²ßÂÔÊÇÿһ¸öÓÅÐ㿪·¢ÕßÓ¦µ±ÕÆÎÕµÄÖØÒª¼¼ÄÜ¡£
¿ìËÙ¼õ·ÊÒ©
- ÊÝÉíÆÚ¼äÓ¦¸ÃÑ¡ÔñÊʺÏ×Ô¼ºµÄ¼õ·ÊʳÎï
- ÍÆ¼ö9ÖÖÊÝÁ³ÀûÆ÷ ÈÃÄã±äСÁ³ÃÀÅ®
- µ÷ÕûÄÔ³¦¼õ·Ê·¨£¬¼õ·ÊЧ¹ûÏÔÖø£¬²¢ÇÒ²»»á·´µ¯
- Ö÷ʳ¼õ·ÊµÄ¼¸¸öСÌùÊ¿
- ±ß³Ô·¹±ßºÈË®¼õ·Ê·¨
- ½µÖ¬¼õ·Ê ÉúòºÇåÌÀ(ͼ)
- °×Áì¼õ·Ê±Ø¿´µÄ¼¼ÇÉ ÕâÑùÇáËÉ˦¿ªÑ¹Á¦·Ê
- ÍÆ¼ö3ÖÖСÁãʳÊʺϼõ·ÊÆÚ¼äʳÓÃ
- Ó¢¹ú½¡ÃÀ´óÏðïÉϰà×å¼õ·Ê
- Èý¸ö·½·¨½ÌÄã¿ØÖÆÒûʳÁ¿£¬³Ô³öºÃÉí²Ä
- Òûʳ¼õ·Ê²»·´µ¯ÓÐÄÄЩС¼¼ÇÉ
- ×øÔÚÒÎ×ÓÉϾÍÄÜÁ·µÄÊÝÑüÔ˶¯
- ²âÊÔÄãÊʺÏʲôÀàÐ͵ÄÔ˶¯
- ÉϰëÉí·ÊÅÖÔõô°ì£¿Õü¾ÈÃîÕÐÔÚÕâÀï
- ÍøÓÑÒ»¸öÔÂÊÝ20½ïµÄÎÞÔ˶¯¼õ·Ê·¨£¬ÍƼö¸øËùÓÐÏë±äÊݵÄÈË
- ÈýÈÕ·äÃÛÅݲè¼õ·Ê·¨µÄ²Ù×÷·½·¨