锘??xml version="1.0" encoding="utf-8" standalone="yes"?>老司机成人网,亚洲综合欧美,亚洲欧洲一区二区三区http://m.shnenglu.com/ay19880703/zh-cnSun, 16 Nov 2025 01:39:44 GMTSun, 16 Nov 2025 01:39:44 GMT60璁﹛p鍔犺澆鎸囧畾鐨勫唴鏍哥増鏈?-鍒互涓簒p鍔犺澆鐨勫唴鏍告繪槸鏉ヨ嚜浜巒toskrnl.exe!!!http://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.html__ay__aySat, 06 Apr 2013 05:16:00 GMThttp://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.htmlhttp://m.shnenglu.com/ay19880703/comments/199145.htmlhttp://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/199145.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/199145.html鎴慽da鏄痭toskrnl.exe ....  鑰寃indows涓姞杞界殑鐗堟湰鏄?span style="font-size: 14px;">ntkrpamp.exe

蹇樹(shù)簡(jiǎn)鎿嶄綔緋葷粺浼?xì)鏍规嵁澶勭悊鍣ㄥ瀷鍙峰姞铦蹭笉鍚岀増鏈唴鏍镐?...
姝eソ鐪嬪埌楂樼璋冭瘯涓婃湁鍏充簬榪欎釜鐨勮璁? http://advdbg.org/forums/2142/ShowPost.aspx

浣嗘槸鎴戠殑鍒嗘瀽鏄熀浜巒toskrnl鐨勶紝娌″姙娉曪紝鍙ソ寮哄埗鎸囧畾緋葷粺鍔犺澆ntosknrl浜?寰楀仛浠ヤ笅鍑犱釜宸ヤ綔

1 鎶妚m鐨刾rocessor璋冩垚鍗曟牳鍗曞鐞嗗櫒
2 寮windows铏氭嫙鏈? 涓轟簡(jiǎn)鍛婅瘔緋葷粺鐜板湪鏄崟鏍稿崟澶勭悊鍣ㄦā寮?寰楄窇涓涓嬭繖涓懡浠?nbsp;
rundll32.exe setupapi,InstallHinfSection ACPIAPIC_UP_HAL 131 %windir%\inf\hal.inf
鍙傝? 濡備綍淇敼Windows XP緋葷粺鐨勫唴鏍哥被鍨?nbsp; http://blog.sina.com.cn/s/blog_5918846401000bik.html
3 褰撶劧,榪欓噷榪樻病緇撴潫,濡傛灉澶勭悊鍣ㄦ敮鎸丳AE 閭d箞緋葷粺浼?xì)鍔犺浇ntoskrnla  鎵浠ヨ繕寰楃鐢≒AE. 鍒?span style="font-family: arial, 瀹?huà)浣? sans-serif; font-size: 14px; line-height: 24px; text-indent: 30px; background-color: #ffffff;">BOOT.INI閲岄潰, 鍚姩璁劇疆涓鏋滄湁/noexecute=optin灝辨浛鎹㈡敼鎴?execute,娌℃湁鐨勮瘽灝卞姞涓?/span>/execute

瀹屼簡(jiǎn)鍚庡氨浼?xì)鍔犺浇ntoskrnl浜?鏁堟灉鍥?

鎸囧畾鍏跺畠緋葷粺鏂規(guī)硶綾諱技,鍦ㄦ浠呮姏鐮栧紩鐜?nbsp;





__ay 2013-04-06 13:16 鍙戣〃璇勮
]]>
ATL鐨刼ffsetofclass涓?涓哄暐_ATL_PACKING鏄?鐨勮В閲?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Thu, 12 Jan 2012 05:52:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/164053.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/164053.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/164053.html</trackback:ping><description><![CDATA[ <p>瑙g瓟鍑哄</p> <p> <a >http://stackoverflow.com/questions/5014061/whats-the-use-of-atl-packing-constant-when-computing-distance-from-the-start-o</a> </p> <p>聽(tīng)</p> <p>C++鏍囧噯瑙勫畾:</p> <p>緙栬瘧鍣ㄧ殑綾葷殑綾誨瀷杞崲瀵圭┖鎸囬拡(NULL)鐗規(guī)畩澶勭悊,鍗充綘NULL榪涜寮哄埗綾誨瀷杞寲鐨勭粨鏋滆繕鏄疦ULL,鎵浠モ?</p> <pre> <code>static_cast綾誨瀷杞寲鐨勬椂鍊?_ATL_PACKING鐨勫煎緱鏄潪闆跺氨濂?/code> </pre> <pre> <code> </code>聽(tīng)</pre> <p> <strong>C++ Standard 4.10/3 Pointer conversions [conv.ptr]:</strong> </p> <p>An rvalue of type 鈥減ointer to cv D,鈥?where D is a class type, can be converted to an rvalue of type 鈥減ointer to cv B,鈥?where B is a base class (clause 10) of D. If B is an inaccessible (clause 11) or ambiguous (10.2) base class of D, a program that necessitates this conversion is ill-formed. The result of the conversion is a pointer to the base class sub-object of the derived class object. <strong><font color="#ff0000">The null pointer value is converted to the null pointer value of the destination type.</font></strong></p> <img src ="http://m.shnenglu.com/ay19880703/aggbug/164053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-12 13:52 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>WINDBG鐨勫爢璋冭瘯&mdash;full page heap鐨勫爢鐮村潖媯(gè)嫻嬪師鐞?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Thu, 05 Jan 2012 01:17:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163604.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163604.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163604.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: <a >cnss-ay鐨勫崥瀹?/a>@Notice: <font color="#ff0000">杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font></p> <p><font color="#ff0000"></font> </p> <p><font size="3">姝ゆ枃浼?xì)娑夊強(qiáng)鍒颁竴浜涙櫘閫氬爢鐨勭煡璇嗭紝榪欎簺鍐呭鍙互鍙傝鎴戜箣鍓嶇殑鏂囩珷 </font><a href="http://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html" target="_blank"><font size="3">WINDBG鐨勫爢璋冭瘯--浜?jiǎn)瑙EAP緇勭粐</font></a></p> <h1>鍫嗙牬鍧?/h1> <p><font size="2">鎵璋撶殑鍫嗙牬鍧忥紝鏄娌℃帶鍒跺ソ鑷繁鐨勬寚閽堬紝鎶婁笉灞炰簬浣犲垎閰嶇殑閭e潡鍐呭瓨緇欏啓瑕嗙洊浜?jiǎn)銆傝繖鍧楀唴瀛樺彲鑳芥槸浣犵▼搴忕殑鏁版嵁錛屼篃鍙兘鏄爢鐨勭鐞嗙粨鏋勩傞偅涔堣繖涓細(xì)瀵艱嚧鎬庢牱鐨勫悗鏋滃憿錛熷彲鑳界殑鎯呭喌鎴戜滑鏉y涓?/font></p> <ol> <li><font size="2">鎶婄▼搴忛噷鐨勮綆楃粨鏋滆鐩栦簡(jiǎn)錛岃繖涔熻浼?xì)璁╀綘閲嶅鐪嬩簡(jiǎn)N嬈′唬鐮侊紝鏍¢獙浜?jiǎn)N嬈¤綆楅昏緫涔熸悶涓嶆槑鐧戒負(fù)浣曡綆楃粨鏋滆繕鏄湁闂 </font> <li><font size="2">鍫嗙鐞嗙粨鏋勮鐮村潖浜?jiǎn)锛宯ew/delete錛屾垨鑰卪alloc/free鎿嶄綔澶辮觸 </font> <li><font size="2">絳夌瓑絳夌瓑~</font></li></ol> <p><font size="2">鍫嗙牬鍧忚緝涓虹悊鎯崇殑鎯呭喌鏄淇敼鐨勬暟鎹細(xì)椹笂瀵艱嚧紼嬪簭crash錛屾渶宸殑鎯呭喌鏄綘鐨勫爢鏁版嵁鑾悕鍏跺鍦ㄤ粖澶╄鏀逛簡(jiǎn)錛屼絾鏄庡ぉ鎵峜rash銆傝繖涓椂鍊欏湪鍘誨垎鏋恈rash錛屽氨濡傛垜浠殑璀﹀療鍙斿彅鐜板湪鎺ユ墜涓妗?0騫村墠鐨勬瀛愪竴鑸?---鏃犱粠涓嬫墜銆傝佸縐頒箣涓篽eap corruption鏄緢璐村垏鐨勶紝鏈夋椂鍊欏挶鍫嗘暟鎹鎰忓綃℃敼鏄棤澹版棤鎭殑錛屼綘涔熻娌℃硶浠庣晫闈㈢敋鑷蟲(chóng)棩蹇楁枃浠朵腑鐪嬪埌瀹冭綃℃敼鐨勪竴鐐硅抗璞★紝褰撳埌鏌愪竴涓椂鍒伙紝榪欑閿欒浼?xì)鏆撮湶鍑烘潵锛岀劧鑰岃繖涓椂鍊欐煡鐪嬪爢淇℃伅涔熻浼?xì)鏄鏃犲ご缛A銆傛墍浠ュ浜庡爢鐮村潖錛屽挶鐨勭瓥鐣ユ槸灝芥棭鍙戠幇鎴戜滑鐨勫爢琚鏀逛簡(jiǎn)錛屾渶濂借兘澶熷湪鍫嗘暟鎹鎰忓綃℃敼鐨勯偅涓鏃跺埢璇卞彂涓涓紓甯告潵鎻愰啋鎴戜滑----鍏勫紵錛屼綘鐨勫爢琚厫铓浜?jiǎn)銆?/font></p> <p><font size="2">寰蔣鎻愪緵浜?jiǎn)涓浜涙柟妗堬紝鏉ュ府鍔╂垜浠瘖鏂爢鐮村潖銆備竴鑸潵璇達(dá)紝鍫嗙牬鍧忓線寰閮芥槸鍐欐暟鎹秺鐣岄犳垚鐨勶紙yy鐨勭浜岀鎯呭喌錛屽鏋滄槸絎竴縐嶆儏鍐靛叾瀹炶繕綆鍗曪紝涓嬩釜鍐呭瓨鏂偣灝卞ソ錛夛紝鎵浠ュ井杞湪鍫嗗垎閰嶄笂錛岀粰紼嬪簭鍛橀棬棰濆鎻愪緵浜?縐嶅爢鍒嗛厤妯″紡--瀹屽叏欏靛爢錛坒ull page heap錛夛紝鍑嗛〉鍫?normal page heap)錛岀敤鏉ユ嫻嬪爢琚啓瓚婄晫鐨勬儏鍐點(diǎn)?/font></p> <h1></h1> <h1>瀹屽叏欏靛爢錛坒ull page heap錛?/h1> <h2>媯(gè)嫻嬪師鐞?/h2> <p><font size="2">瀹屽叏欏靛爢鐨勬嫻嬪熀鏈濊礬鏄氳繃鍒嗛厤鐩擱偦鐨勪竴涓〉錛屽茍灝嗗叾璁句負(fù)涓嶅彲璁塊棶灞炴э紝鐒跺悗鐢ㄦ埛鏁版嵁鍧椾細(xì)琚垎閰嶅埌鍐呭瓨欏電殑鏈鏈錛屼粠鑰屽疄鐜拌秺鐣岃闂殑媯(gè)嫻嬨傚綋鎴戜滑瀵瑰爢涓垎閰嶇殑鍐呭瓨璇誨啓瓚婄晫鍚庝究浼?xì)璁块棶鍒伴偅涓笉鍙潥剻宓锛尵p葷粺鎹曡幏鍒版敼嬈″紓甯稿悗浼?xì)璇曞浘涓柇鎵ц迤垶畣璇ュ紓甯镐笂鎶ゾl檇ebugger錛屾垨鑰呭穿婧冦傚叿浣撶殑鍐呭瓨緇勭粐緇撴瀯濡備笅鍥?/font></p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_15.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_thumb_5.png" width="468" height="184"></font></a></p> <p><font size="2">鎽樿嚜銆婅蔣浠惰皟璇曘?/font></p> <p><font size="2"> </font></p> <p><font size="2">涓庢櫘閫氬爢涓嶅悓鐨勬槸錛屽唴瀛樺潡鍓嶉潰鐨凥EAP_ENTRY緇撴瀯琚獶PH_BLOCK_INFORMATION緇撴瀯鍙栦唬錛岃繖涓粨鏋勫唴閮ㄨ褰曚簡(jiǎn)欏靛爢妯″紡涓嬭繖涓唴瀛樺潡鐨勪竴浜涘熀鏈俊鎭傚鏋滅敤鎴鋒暟鎹尯鍓嶉潰鐨勬暟鎹紝涔熷氨鏄疍PH_BLOCK_INFORMATION緇撴瀯琚牬鍧忎簡(jiǎn)錛岄偅涔堝湪閲婃斁鍐呭瓨鍧楃殑鏃跺欑郴緇熶細(xì)鎶ラ敊錛屽鏋滅紪紼嬭呭榪欏潡鍐呭瓨鍧楄鍐欒秺鐣屼簡(jiǎn)錛屽綋鐒?dòng)灱寴q欓噷瓚婄晫鏈夊嚑縐嶆儏鍐碉細(xì)</font></p> <ol> <li><font size="2">璇昏秺鐣岋紝浣嗗彧鏄闂簡(jiǎn)鍧楀熬濉厖閮ㄥ垎鏁版嵁錛岄偅涔堢郴緇熶笉浼?xì)鎶ラ?</font> <li><font size="2">鍐欒秺鐣岋紝浣嗗彧綃℃敼浜?jiǎn)鍥句腑鍧棡畱帧厖鐨勯儴鍒嗗Q岄偅涔堝湪鍫嗗潡閲婃斁鐨勬椂鍊欎細(xì)鎶ラ敊 </font> <li><font size="2">璇昏秺鐣岋紝涓旇秴榪囦簡(jiǎn)鍧楀熬濉厖鐨勯儴鍒嗭紝璁塊棶鍒頒簡(jiǎn)鏍呮爮欏碉紝閭d箞緋葷粺浼?xì)绔嬪嵪x(chóng)姏鍑轟竴涓紓甯稿茍涓柇鎵ц </font> <li><font size="2">鍐欒秺鐣岋紝涓旇秴榪囦簡(jiǎn)鍧楀熬濉厖閮ㄥ垎錛屽啓鍒頒簡(jiǎn)鏍呮爮欏碉紝閭d箞緋葷粺浼?xì)绔嬪嵪x(chóng)姏鍑轟竴涓紓甯稿茍涓柇鎵ц</font></li></ol> <p><font size="3"><font size="2">榪欓噷闇瑕佹敞鎰忕殑榪樻槸<font color="#ff0000">鍧楀熬濉厖涓嶄竴瀹氬瓨鍦?/font>錛屽潡灝懼~鍏呮槸鍥犱負(fù)瑕佹弧瓚沖爢鍐呭瓨鐨勬渶灝忓垎閰嶇矑搴︼紝濡傛灉鏈韓鍐呭瓨鍧楃殑鍒嗛厤綺掑害灝卞凡緇忔槸鏈灝忓垎閰嶇矑搴︾殑鍊嶆暟浜?jiǎn)锛岄偅涔堝潡灏惧~鍏厼兏嶅瓨鍦ㄤ簡(jiǎn)锛屾瘮濡傚爢鍐呭瓨鍒嗛厤绮掑害鏄? bytes錛岄偅涔堝鏋滅敵璇蜂簡(jiǎn)14 bytes鐨勮瘽浼?xì)鏈? bytes鐨勫ぇ寰愬皬鐨勫潡灝懼~鍏呭潡錛屽鏋滅敵璇蜂簡(jiǎn)24bytes錛岄偅涔堝氨娌℃湁鍧楀熬濉厖浜?jiǎn)锛屽洜湄?fù)24姝eソ鏄?鐨勫嶆暟</font>銆?/font></p> <p> </p> <h2>紺轟緥</h2> <p><font size="2">寮鍚叏欏靛爢錛堢敤windbg鐩綍涓嬬殑gflags鎴栬呰涓涓猘ppverifier閮藉彲浠ュ紑鍚級(jí)錛岄氳繃鑷繁鍐欑殑涓涓猦eap.exe鏉ョ湅涓涓嬪浣曚嬌鐢ㄥ叏欏靛爢媯(gè)嫻嬪爢鐮村潖鎯呭喌heap.exe浠g爜濡備笅錛?/font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8007c4f-f636-4682-8278-4037e4c00777" class="wlWriterSmartContent"><pre class="c" name="code">#include "windows.h" int main() { HANDLE heap_handle = HeapCreate( NULL , 1024 , 0 ) ; char *temp = NULL ; char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) ; char *buffer1 = (char*)HeapAlloc(heap_handle , NULL , 121) ; temp = buffer ; for( int i = 0 ; i < 138 ; ++i ) { *(temp++) = 'a' ; } HeapFree(heap_handle, 0 , buffer ) ; HeapFree(heap_handle, 0 , buffer1 ) ; HeapDestroy( heap_handle) ; return 0 ; }</pre></div> <p><font size="2">鍦ㄧ14琛屽悜buffer鍐欏叆138瀛楄妭錛岃繖鏄劇劧瓚婄晫浜?jiǎn)锛岀劧鍚庡湪鐢╳indbg鍚姩heap.exe錛岀洿鎺ヨ繍琛岋紝浼?xì)鍙戠幇鎶ラ敊濡備?/font></p> <p><font size="2">0:000> g<br>(1f50.1f54): Access violation - code c0000005 (first chance)<br>First chance exceptions are reported before any exception handling.<br>This exception may be expected and handled.<br>eax=00000080 ebx=00000000 ecx=02596000 edx=02596000 esi=00000001 edi=00193374<br>eip=00191068 esp=0016fdc8 ebp=0016fddc iopl=0         nv up ei ng nz ac pe cy<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010297<br>heap!main+0x68:<br>00191068 c60161          mov     byte ptr [ecx],61h         ds:0023:02596000=??<br></font></p> <p><font size="2">鎶ヤ簡(jiǎn)涓涓唴瀛樿闂敊璇紝鐒跺悗鐪嬩竴涓嬭皟鐢ㄥ爢鏍?/font></p> <p><font size="2">0:000> kb<br>ChildEBP RetAddr  Args to Child              <br>0016fddc 0019120f 00000001 023fbfd0 0239df48 heap!main+0x68 [d:\projects\heap\<font color="#ff0000">main.cpp @ 14</font>]<br>0016fe20 765b1114 7ffd3000 0016fe6c 778eb429 heap!__tmainCRTStartup+0x10f [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 582]<br>0016fe2c 778eb429 7ffd3000 757369d8 00000000 kernel32!BaseThreadInitThunk+0xe<br>0016fe6c 778eb3fc 00191357 7ffd3000 00000000 ntdll!__RtlUserThreadStart+0x70<br>0016fe84 00000000 00191357 7ffd3000 00000000 ntdll!_RtlUserThreadStart+0x1b</font></p> <p><font size="2">鍙互鐪嬪埌鏄14琛屾姤鐨勯敊錛屼絾鏄?4琛岀殑浠g爜榪愯浜?jiǎn)閭d箞澶殝啤锛屾垜浠啀鐪嬩竴涓嬭繖涓椂鍊欏彉閲廼鐨勫兼槸澶氬皯</font></p> <p><font size="2">0:000> dv i<br>              i = 0n128</font></p> <p><font size="2">鏄劇劧錛屽湪濉厖絎?28瀛楄妭鐨勬椂鍊欙紝鎴戜滑鐨則emp鎸囬拡璁塊棶鍒頒簡(jiǎn)鏍呮爮欏碉紝浠庤屾姤鍑轟簡(jiǎn)涓涓唴瀛樿繚瑙勭殑寮傚父銆?/font></p> <p><font size="2">榪欓噷欏哄甫鐪嬩竴涓嬪鏋滄垜浠垎閰嶇殑鍐呭瓨?shù)笉鏄? bytes鐨勬儏鍐碉紙涓鑸爢鍐呭瓨鍒嗛厤綺掑害鏄? bytes錛屾墍浠ョ敵璇?28 bytes鐨勫唴瀛樻椂鏄笉浼?xì)鏈夊潡灏惧~鍏呴儴鍒嗙殑锛?jí)</font></p> <p><font size="2">閭f垜浠帴涓嬫潵鐪嬪彟澶栦竴孌典唬鐮?/font></p> <p><font color="#ff0000" size="2">鎴戜滑鎶婄10琛岀殑temp = buffer鏀規(guī)垚temp = buffer1</font></p> <p><font color="#000000" size="2">鍥犱負(fù)buffer1鐢寵浜?21 bytes錛屼篃灝辨槸璇村畠鏈? bytes鐨勫~鍏呭瓧鑺?/font></p> <p><font size="2">0:000> g<br>(1ba0.1ba4): Access violation - code c0000005 (first chance)<br>First chance exceptions are reported before any exception handling.<br>This exception may be expected and handled.<br>eax=00000080 ebx=00000000 ecx=024c8000 edx=024c8000 esi=00000001 edi=00033374<br>eip=00031068 esp=002cfb80 ebp=002cfb94 iopl=0         nv up ei ng nz ac pe cy<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010297<br>heap!main+0x68:<br>00031068 c60161          mov     byte ptr [ecx],61h         ds:0023:024c8000=??<br>0:000> dv i<br><font color="#ff0000">              i = 0n128</font></font></p> <p><font size="2">鍙互鐪嬪埌鍙橀噺i榪樻槸128錛屼篃灝辨槸璇存垜浠繕鏄湪璁塊棶鍒扮128瀛楄妭鍚庢墠寮曞彂璁塊棶寮傚父錛岃屼笉鏄垜浠湡鏈涚殑121瀛楄妭鍚庡氨寮曞彂寮傚父銆?/font></p> <p><font size="2">榪欓噷涔熷氨鏄<font color="#ff0000">濡傛灉鎴戜滑鐨勪唬鐮佷腑瀵圭敵璇風(fēng)殑鍫嗗唴瀛樺啓瓚婄晫浜?jiǎn)锛屽啓鏁版嵁瑕嗙洊鍧棡畱帧厖閮ㄥ垎鐨勬椂鍊欏茍涓嶄細(xì)寮曞彂寮傚父錛?/font></font></p> <p><font size="2">浣嗘槸錛岃繖騫朵笉浠h〃鎴戜滑鐨勫啓瓚婄晫闂?shù)笉浼?xì)琚彂鐜般傚潡灝懼~鍏呴儴鍒嗘槸浼?xì)琚~鍏呬笂鍥哄畾鏁版嵁鐨勫Q岀郴緇熷湪閫傚悎鐨勬椂鏈猴紙姣斿閿姣佸爢鐨勬椂鍊欙級(jí)浼?xì)鏍¢獙鍧棡畱帧厖鍧楀Q屽鏋滃彂鐜板潡灝懼~鍏呭潡鏁版嵁鏈夊彉錛岄偅涔堜究浼?xì)鎶ヤ竴涓獀erifier寮傚父錛屾瘮濡傛垜浠妸浠g爜涓殑for寰幆嬈℃暟鏀逛負(fù)124</font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:14cc24bb-3177-401d-b544-0ea75212c964" class="wlWriterSmartContent"><pre class="c" name="code"> for( int i = 0 ; i < 124 ; ++i )</pre></div> <p><font size="2">閭d箞windbg浼?xì)涓柇鍦ńW?9琛?/font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:27622578-bab1-454b-bf14-dc22531576c3" class="wlWriterSmartContent"><pre class="c" name="code"> HeapDestroy( heap_handle) ;</pre></div> <p><font size="2">鎻愮ず鍐呭濡備笅<br>=======================================<br><font color="#0000ff">VERIFIER STOP 0000000F</font>: pid 0x1E3C: Corrupted suffix pattern for heap block. </font></p> <p><font size="2">    <font color="#ff0000">025A1000</font> : Heap handle used in the call.<br>    <font color="#ff0000">025A7F80</font> : Heap block involved in the operation.<br>    00000079 : Size of the heap block.<br>    <font color="#ff0000">025A7FF9</font> : Corruption address.</font></p> <p><br><font size="2">=======================================<br>This verifier stop is not continuable. Process will be terminated <br>when you use the `go' debugger command.</font></p> <p><font size="2">=======================================</font></p> <p><font size="2">(1e3c.143c): Break instruction exception - code 80000003 (first chance)<br>eax=6c75e994 ebx=6c75cf58 ecx=00000002 edx=002bf461 esi=00000000 edi=000001ff<br>eip=6c753c38 esp=002bf6b4 ebp=002bf8b8 iopl=0         nv up ei pl nz na po nc<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202<br>vrfcore!VerifierStopMessageEx+0x543:<br>6c753c38 cc              int     3</font></p> <p><font size="2">鎻愮ず璇寸殑寰堟竻妤氫簡(jiǎn)錛宎ppverifier鎸囧嚭浜?jiǎn)鍫嗗拰鍏蜂綋鐨勫唴瀛樺潡锛屾垜浠瑯q欎釜鏃跺欐煡鐪媌uffer1鐨勫兼槸<font color="#ff0000">0x025a7f80</font> 錛屾濂藉氨鏄嚭闂鐨勫爢鍧楋紝鍑洪棶棰樼殑鍦板潃鏄?x025a7ff79錛屾濂藉氨鏄痓uffer1鍐呭瓨鍧楃殑杈圭晫錛岄敊璇師鍥犳槸Corrupted suffix pattern for heap block錛屼篃灝辨槸璇村挶鍧楀熬濉厖閮ㄥ垎錛坰uffix pattern for heap block錛夎鐮村潖錛坈orrupted錛変簡(jiǎn)</font></p> <p><font size="2">緇撹錛氬彧瑕佸啓瓚婄晫錛岀郴緇熼兘鑳藉媯(gè)嫻嬪嚭鏉ワ紝鍙笉榪囧鏋滃啓瓚婄晫鍐欏埌浜?jiǎn)鏍呮爮椤典細(xì)鐞嗚В瑙﹀彂寮傚告腑鏂紝鑰屽啓瓚婄晫鍙啓浜?jiǎn)鍧棡畱帧厖閮ㄥ垎锛岄偅涔埦p葷粺鍦ㄩ傚綋鏃舵満錛堟瘮濡傚爢琚攢姣侊紝鎴栬呰繖鍧楀唴瀛樿閲嶆柊鍒嗛厤絳夋椂鏈猴級(jí)浼?xì)瀵瑰潡灏惧~鍏呴儴鍒嗗仛瀹屾暣鎬ф嫻嬶紝濡傛灉鍙戠幇琚牬鍧忎簡(jiǎn)錛屽氨浼?xì)鎶ラ敊銆傚綋鐒?dòng)灱屼綘鍙互鏍规嵁閿欒鍙峰Q?font color="#0000ff">钃濊壊瀛椾綋閮ㄥ垎</font>錛変俊鎭幓appverifier鐨勫府鍔╂枃妗d腑鏌ユ壘鏇磋緇嗙殑閿欒璇存槑銆?/font></p> <h2>緇撴瀯璇﹁В</h2> <p><font size="2">榪欐鍜辨潵鍊掑彊錛屽厛浠庢渶鍩烘湰鐨勫唴瀛樺爢鍧楃粨鏋凞PH_BLOCK_INFORMATION寮濮嬩粙緇嶏紝DPH_BLOCK_INFORMATION緇撴瀯寰蔣涔熸湁瀵瑰簲鏂囨。浠嬬粛</font></p> <p><font size="2"><img alt="ms220938.Local_-1265171613_fphbs(en-US,VS.80).gif" src="http://i.msdn.microsoft.com/dynimg/IC171455.gif" width="505" height="190"></font></p> <h2><font size="2">錛堟憳鑷狹SDN錛?/font></h2> <p><font size="2"></font> </p> <p><font size="2">鍏朵腑prefix start magic鍜宲refix end magic鏄牎楠屽潡錛岀敤鏉ユ嫻婦PH_BLOCK_INFORMATION鏄惁琚牬鍧忥紝榪欎簺媯(gè)嫻嬮儴鍒嗗睘浜嶥PH_BLOCK_INFORMATION緇撴瀯銆傛垜浠厛鏉ョ敤windbg鎺㈢┒涓婦PH_BLOCK_INFORMATION榪欎釜鏈鍩烘湰鐨勭粨鏋?鍐嶄竴嬈?鎴戜滑鎵撳紑windbg璋冭瘯heap.exe.榪愯鍒扮10琛?榪欎釜鏃跺欏彉閲忕殑鍊兼槸</font></p> <p><font size="2">0:000> dv heap_handle<br>    heap_handle = <font color="#ff0000">0x024a0000</font><br>0:000> dv buffer<br>         buffer = <font color="#ff0000">0x024a5f80</font> "???"<br>0:000> dv buffer1<br>        buffer1 = <font color="#ff0000">0x024a7f80</font> "???"</font></p> <p><font size="2">榪欓噷鍙互鐪嬪埌涓涓緢鏈夎叮鐨勭幇璞?buffer1鍜宐uffer鐨勫湴鍧姝eソ鐩稿樊8K,涔熷氨鏄袱涓〉鐨勫ぇ灝?榪欏綋鐒舵槸鍥犱負(fù)欏靛爢鐨勫師鍥犲暒,鍏跺疄榪欎袱鍧楀唴瀛樺垎閰嶆槸鐩擱偦鐫鐨?铏氭嫙鍐呭瓨緇撴瀯濡備笅鍥炬墍紺?/font></p> <table border="1" cellspacing="0" cellpadding="2" width="801"> <tbody> <tr> <td valign="top" width="200"><font size="2">buffer鍐呭瓨鍧楋紙4K錛?/font></td> <td valign="top" width="200"><font size="2">鏍呮爮欏碉紙4K錛?/font></td> <td valign="top" width="200"><font size="2">buffer1鍐呭瓨鍧?4K)</font></td> <td valign="top" width="199"><font size="2">鏍呮爮欏?4K)</font></td></tr></tbody></table> <p><font size="2"></font> </p> <p><font size="2">鐢變簬buffer鍜宐uffer1鍒嗛厤鐨勫ぇ灝忔槸涓鏍風(fēng)殑錛坆uffer1鍔犱笂灝鵑儴濉厖鍧楀拰buffer鐨勫ぇ灝忕浉鍚岋級(jí)錛屾墍浠ヨ繖涓ゅ潡鍐呭瓨姝eソ鐩稿樊8K</font></p> <p><font size="2">鑰孌PH_BLOCK_INFORMATION灝卞湪鎴戜滑鐢寵鐨勫唴瀛樺潡鎸囬拡鐨勫墠0x20瀛楄妭澶勶紝鐢╠t鍛戒護(hù)鐪嬬殑緇撴灉濡備笅:</font></p> <p><font size="2">0:000> dt _DPH_BLOCK_INFORMATION 0x024a5f80-0x20<br>verifier!_DPH_BLOCK_INFORMATION<br>   +0x000 StartStamp       : 0xabcdbbbb<br>   +0x004 Heap             : 0x024a1000 Void<br>   +0x008 RequestedSize    : 0x80<br>   +0x00c ActualSize       : 0x1000<br>   +0x010 Internal         : _DPH_BLOCK_INTERNAL_INFORMATION<br>   +0x018 StackTrace       : 0x003d9854 Void<br>   +0x01c EndStamp         : 0xdcbabbbb</font></p> <p><font size="2"></font> </p> <p><font size="2">0x024a5f80-0x20灝辨槸DPH_BLOCK_INFORMATION緇撴瀯鐨勫湴鍧銆侱PH_BLOCK_INFORMATION緇撴瀯鍦ㄥ凡鍒嗛厤鍜屽凡閲婃斁鐨勭姸鎬佷笅錛孲tartStamp鍜孍ndStamp錛堜篃灝辨槸MSDN鍥句腑鐨刾refix start magic鍜宲refix end magic錛夋槸涓嶅悓鐨勶紝鏄劇劧dt杈撳嚭鐨勭粨鏋滅湅鏉ワ紝榪欎釜鍐呭瓨鍧楁槸宸插垎閰嶇姸鎬併係tackTrace璁板綍浜?jiǎn)鍒嗛厤杩欎釜鍐呭瓨鍧楁椂鐨勮皟鐢ㄦ爤锛屽彲浠ョ敤dds鏉ョ湅涓涓嬭繖涓唴瀛樺潡琚垎閰嶆椂鍊欑殑璋冪敤鏍?/font></p> <p><font size="2">0:000> dds 0x003d9854 <br>003d9854  00000000<br>003d9858  00004001<br>003d985c  00090000<br>003d9860  5b3b8e89 verifier!AVrfDebugPageHeapAllocate+0x229<br>003d9864  776d5c4e ntdll!RtlDebugAllocateHeap+0x30<br>003d9868  77697e5e ntdll!RtlpAllocateHeap+0xc4<br>003d986c  776634df ntdll!RtlAllocateHeap+0x23a<br>003d9870  003b1030 heap!main+0x30 [d:\projects\heap\main.cpp @ 8]<br>003d9874  003b120c heap!__tmainCRTStartup+0x10f [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 582]<br>003d9878  76451114 kernel32!BaseThreadInitThunk+0xe<br>003d987c  7766b429 ntdll!__RtlUserThreadStart+0x70<br>003d9880  7766b3fc ntdll!_RtlUserThreadStart+0x1b</font></p> <p><font size="2">杈撳嚭緇撴灉鎴戜滑鍙互鐪嬪埌榪欎釜鍐呭瓨鍧楁槸鍦╩ain.cpp,涔熷氨鏄垜浠殑紺轟緥浠g爜鐨勭8琛屽垎閰嶇殑錛岀8琛屾槸char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) 姝eソ灝辨槸鍒嗛厤buffer鍐呭瓨鐨勯偅鏉¤鍙ャ傝繖涓粨鏋勭殑鍏跺畠瀛楁錛岄【鍚嶆濅箟錛孉ctualSize鎸囨槑浜?jiǎn)瀹為檯鍒嗛厤瀛楄妭鏁板Q?x1000 bytes涔熷氨鏄?K澶у皬錛孖nternal榪欎釜瀛楁淇濆瓨?shù)簡(jiǎn)涓唴閮ňl撴瀯錛岀敤windbg涔熺湅涓嶅嚭榪欎釜緇撴瀯淇℃伅銆?/font></p> <p><font size="2">褰撶劧涓轟簡(jiǎn)闃叉鍐呭瓨鍧楀墠闈㈢殑鏁版嵁琚啿鍒鋒帀錛岄櫎浜?jiǎn)DPH_BLOCK_INFORMATION澶栵紝緋葷粺榪橀氳繃DPH_HEAP_BLOCK淇濆瓨?shù)簡(jiǎn)鎵鍒嗛厤鍐呭瓨鍧楃殑淇℃伅錛?/font></p> <p><font size="2">閫氳繃!heap 鈥損 鈥揾 [address] 鍙互鏌ョ湅鍒伴〉鍫嗙殑淇℃伅</font></p> <p><font size="2">0:000> !heap -p -h <font color="#ff0000">0x024a0000                            //heap_handle鐨勫?/font><br>    _DPH_HEAP_ROOT @ 24a1000<br>    Freed and decommitted blocks<br>      DPH_HEAP_BLOCK : VirtAddr VirtSize<br>    Busy allocations<br>      DPH_HEAP_BLOCK : UserAddr  UserSize - VirtAddr VirtSize<br>        <font color="#0000ff">024a1f6c</font> : 024a5f80 00000080 - 024a5000 00002000<br>        024a1f38 : 024a7f80 00000079 - 024a7000 00002000<br></font></p> <p><br><font size="2">鍙互鐪嬪埌錛宐uffer鍐呭瓨鍧楀搴旂殑DPH_HEAP_BLOCK緇撴瀯鍦板潃鏄?font color="#0000ff">024a1f6c</font></font></p> <p><font size="2">0:000> dt _DPH_HEAP_BLOCK 024a1f6c<br>verifier!_DPH_HEAP_BLOCK<br>   +0x000 NextFullPageHeapDelayedNode : 0x024a1020 _DPH_HEAP_BLOCK<br>   +0x004 DelayQueueEntry  : _DPH_DELAY_FREE_QUEUE_ENTRY<br>   +0x000 LookasideEntry   : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 UnusedListEntry  : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 VirtualListEntry : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 FreeListEntry    : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 TableLinks       : _RTL_BALANCED_LINKS<br>   +0x010 pUserAllocation  : 0x024a5f80  "???"<br>   +0x014 pVirtualBlock    : 0x024a5000  "???"<br>   +0x018 nVirtualBlockSize : 0x2000<br>   +0x01c Flags            : _DPH_HEAP_BLOCK_FLAGS<br>   +0x020 nUserRequestedSize : 0x80<br>   +0x024 AdjacencyEntry   : _LIST_ENTRY [ 0x24a1f5c - 0x24a1fc4 ]<br>   +0x02c ThreadId         : 0x3f4<br>   +0x030 StackTrace       : 0x003d9854 Void</font></p> <p><font size="2">浠巇t鐨勬暟鎹湅鏉ワ紝榪欎釜緇撴瀯澶у皬涓?x34錛宐uffer鍜宐uffer1鐨凞PH_HEAP_BLOCK緇撴瀯棣栧湴鍧姝eソ涔熸槸鐩稿樊0x34錛岃鏄庤繖涓や釜緇撴瀯鏄揣鎸ㄧ潃鐨勶紝涓嬩竴姝ュ湪璁╂垜浠潵鐪嬬湅DPH_HEAP_BLOCK緇撴瀯鏄浣曠粍緇囩殑銆?/font></p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_3.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_thumb.png" width="555" height="218"></font></a></p> <p><font size="2">鎽樿嚜銆婅蔣浠惰皟璇曘?/font></p> <p><font size="2"></font> </p> <p><font size="2">榪欎釜鏄暣涓殑欏靛爢緇撴瀯鍥撅紝鎴戜滑鍏堟潵璇磋DPH_HEAP_BLOCK鐨勭粍緇囧惂錛屽湪鍥句腑0x16d00000鏄〉鍫嗙殑棣栧湴鍧錛屼篃灝辨槸欏靛爢鐨勫彞鏌勶紝鎴戜滑璋冭瘯鍣ㄤ腑錛岄〉鍫嗛鍦板潃鍒欐槸<font color="#ff0000">0x024a0000</font>錛屼負(fù)浜?jiǎn)鏁版嵁缁熶竴錛屾垜榪樻槸鎷?x024a0000浣滀負(fù)鍫嗗彞鏌勬潵璁茶В銆傛垜浠殑DPH_HEAP_BLOCK鍏跺疄灝卞湪鍫嗗潡鑺傜偣姹犻噷杈癸紝鎴戜滑鍙互榪戜技鎶婅繖涓妭鐐規(guī)睜鐪嬫垚涓涓ぇ鍨嬬殑DPH_HEAP_BLOCK鏁扮粍錛屼絾鏈変釜鍦版柟鍦ㄨ蔣浠惰皟璇曚腑娌℃湁鎻愬埌錛屽氨鏄湪win7涓嬶紝榪愯鏃惰繖浜汥PH_HEAP_BLOCK緇撴瀯閮芥槸浠ヤ簩鍙夊鉤琛℃暟鐨勭粨鏋勬潵緇勭粐鐨勶紝榪欎釜鏍?wèi)鐨劸l撴瀯鐨勫叆鍙f鏄湪TableLinks瀛楁鍐咃紝榪欎箞鍋氱殑鍘熷洜涔熷ぇ姒傛槸鍥犱負(fù)鑳藉鍦ㄥ垎閰嶆椂鏇村揩鐨勭儲(chǔ)銆傛垜浠啀鐪嬬湅DPH_HEAP_ROOT緇撴瀯錛岃繖涓粨鏋勫偍瀛樹(shù)簡(jiǎn)鏁翠釜欏靛爢鐨勫繀瑕佷俊鎭紝瀹冨氨鐩稿綋浜庢櫘閫氬爢鐨刜HEAP緇撴瀯銆?/font></p> <p><font size="2">0:000> dt _dph_heap_root 24a1000<br>verifier!_DPH_HEAP_ROOT<br>   +0x000 Signature        : 0xffeeddcc<br>   +0x004 HeapFlags        : 0x1002<br>   +0x008 HeapCritSect     : 0x024a16cc _RTL_CRITICAL_SECTION<br>   +0x00c NodesCount       : 0x2c<br>   +0x010 VirtualStorageList : _LIST_ENTRY [ 0x24a1fa0 - 0x24a1fa0 ]<br>   +0x018 VirtualStorageCount : 1<br>   +0x01c PoolReservedLimit : 0x024a5000 Void<br>   +0x020 <font color="#0000ff">BusyNodesTable</font>   : _RTL_AVL_TABLE<br>   +0x058 NodeToAllocate   : (null) <br>   +0x05c nBusyAllocations : 2<br>   +0x060 nBusyAllocationBytesCommitted : 0x4000<br>   +0x064 pFreeAllocationListHead : (null) <br>   +0x068 FullPageHeapDelayedListTail : (null) <br>   +0x06c DelayFreeQueueHead : (null) <br>   +0x070 DelayFreeQueueTail : (null) <br>   +0x074 DelayFreeCount   : 0<br>   +0x078 LookasideList    : _LIST_ENTRY [ 0x24a1078 - 0x24a1078 ]<br>   +0x080 LookasideCount   : 0<br>   +0x084 UnusedNodeList   : _LIST_ENTRY [ 0x24a1ed0 - 0x24a16e4 ]<br>   +0x08c UnusedNodeCount  : 0x28<br>   +0x090 nBusyAllocationBytesAccessible : 0x2000<br>   +0x094 GeneralizedFreeList : _LIST_ENTRY [ 0x24a1f04 - 0x24a1f04 ]<br>   +0x09c FreeCount        : 1<br>   +0x0a0 PoolCommitLimit  : 0x024a2000 Void<br>   +0x0a4 NextHeap         : _LIST_ENTRY [ 0x5b3e9a58 - 0x23a10a4 ]<br>   +0x0ac ExtraFlags       : 3<br>   +0x0b0 Seed             : 0xfed6f13a<br>   +0x0b4 NormalHeap       : 0x027d0000 Void<br>   +0x0b8 CreateStackTrace : 0x003d9824 _RTL_TRACE_BLOCK<br>   +0x0bc ThreadInHeap     : (null) <br>   +0x0c0 BusyListHead     : _LIST_ENTRY [ 0x24a10c0 - 0x24a10c0 ]<br>   +0x0c8 SpecializedFreeList : [64] _LIST_ENTRY [ 0x24a10c8 - 0x24a10c8 ]<br>   +0x2c8 DelayFreeListLookup : [257] (null) <br>   +0x6cc HeapCritSectionStorage : _RTL_CRITICAL_SECTION<br></p></font> <p><font size="2">榪欓噷杈圭淮鎶や簡(jiǎn)寰堝榪愯鏃朵俊鎭紝姣斿璇碊PH_BLOCK_INFORMATION涓殑閭d釜浜屽弶鏍?wèi)鍏ュ彛鍏跺疄灏辨槸淇濆瓨鍦?font color="#0000ff">BusyNodesTable </font>瀛楁錛岃繖閲岄潰璁板綍浜?jiǎn)鎵鏈夎鍒嗛厤浜?jiǎn)鐨勫唴瀛樺潡鎵瀵瑰簲鐨凞PH_BLOCK_INFORMATION銆傚綋鐒?dòng)灱寴q欓噷闈竴浜涗俊鎭蔣浠惰皟璇曢噷闈㈤兘鏈変粙緇嶏紝寰堝鐪嬪悕瀛椾篃鑳藉鐚滃埌澶ф鎰忔濓紝鐪嬪悕瀛楃寽涓嶅埌鍟ユ剰鎬濈殑瀛楁錛屽叾瀹炴垜涔熺寽涓嶅埌銆傘傘?_-|||鍦ㄥ垱寤洪〉鍫嗗悗錛屾墍鏈夊唴瀛樺垎閰嶉兘鍒嗛厤鍦ㄩ〉鍫嗕腑錛岄氳繃鍒嗛厤鐨勫湴鍧涔熻兘鐪嬪緱鍑烘潵錛堟垜浠垎閰嶇殑鍐呭瓨閮芥槸024a鎵撳ご錛夛紝鑰岄潪鏅氶〉鍫嗕腑錛屾櫘閫氶〉鍫嗕篃浠呬粎鍙槸淇濆瓨?shù)竴浜涚郴緇熷唴閮ㄤ嬌鐢ㄧ殑鏁版嵁銆備竴鑸潵璇達(dá)紝鍫嗗潡鑺傜偣姹犲姞涓奃PH_HEAP_ROOT緇撴瀯澶у皬姝eソ鏄?涓唴瀛橀〉錛屼篃灝辨槸16K銆?/font></p> <h2>浼樼己鐐?/h2> <h3>緙虹偣錛氭秷鑰楀ぇ閲忚櫄鎷熷唴瀛橈紝姣忓潡鍐呭瓨鐨勫垎閰嶇矑搴︽槸2涓〉錛?K錛夛紝</h3> <h3>浼樼偣錛氳兘澶熺珛鍗蟲(chóng)崟鑾瘋秺鐣岃鍐欐搷浣滐紝閫氳繃璋冪敤鏍堝氨鍙互榪芥函鍒伴棶棰樻簮澶淬傝兘澶熷揩閫熷畾浣嶉棶棰樹(shù)唬鐮併?/h3> <h3>浣跨敤寤鴻錛?2浣嶄笅涓嶉傚疁璺戦厤緗枃浠剁粨鏋勬瘮杈冨鏉傜殑杞歡錛岃鎴戜滑鏉ュ亣璁句竴涓獂ml閰嶇疆鏂囦歡涓嬫湁3000涓妭鐐癸紝姣忎釜鑺傜偣鏈?涓瓧絎︿覆鎻忚堪灞炴э紝濡傛灉鎶婅繖浜涢厤緗枃浠朵俊鎭漿鍖栦負(fù)stl緇撴瀯鏉ヤ繚瀛橈紝閭d箞姣忎釜鑺傜偣鍒欓渶瑕佷負(fù)姝ゅ垎閰?*8K鐨勭┖闂達(dá)紝3000欏歸厤緗垯闇瑕?000*5*8K=117MB铏氭嫙鍐呭瓨錛屽鏋滄瘡涓妭鐐逛俊鎭啀澶氫竴浜涘憿錛熻繖鏍蜂細(xì)瀵艱嚧铏氭嫙鍐呭瓨鑰楀敖浠庤屽嚭鐜頒竴緋誨垪鍐呭瓨闂錛堟瘮濡傦紝new澶辮觸錛夈傚綋鐒?4浣嶅氨涓嶅瓨鍦ㄨ繖縐嶉棶棰樹(shù)簡(jiǎn)7T鐨勮櫄鎷熷唴瀛樼┖闂達(dá)紝鐜板湪鐪嬫潵搴旇鏄鐢ㄤ簡(jiǎn)銆?/h3> <p> </p> <p><font color="#ff0000">瀵逛簬璋冭瘯鍫嗙牬鍧忔潵璇達(dá)紝鍏跺疄鎴戜滑鍙浜?jiǎn)瑙PH_BLOCK_INFORMATION緇撴瀯鍜孌PH_HEAP_BLOCK涓殑鍩烘湰瀛楁灝卞樊涓嶅浜?jiǎn)锛寴q欐牱鏇存柟渚挎垜浠畾浣嶅嚭閿欐簮澶淬傛瘮濡傚湪appverifier鎶ラ敊鍚庯紙鎴栬呬綘紼嬪簭鑷繁鑾悕鍏跺宕╂簝鎴栬呮暟鎹綃℃敼鍚庯紝瑕佺煡閬揳ppverifier騫朵笉鎬繪槸鍙俊鐨勶級(jí)錛屾垜浠彲浠ヨ嚜宸辨墜鍔ㄨ皟璇曞嚭閿欑殑鍫嗗潡緇撴瀯錛圖PH_BLOCK_INFORMATION錛孌PH_HEAP_BLOCK鍜孌PH_HEAP_ROOT錛夛紝媯(gè)嫻嬩互涓嬭繖浜涚偣錛?/font></p> <ol> <li><font color="#ff0000">媯(gè)嫻嬪爢鍧楃鐞嗙粨鏋勭殑鏍¢獙瀛楁鏄惁瀹屾暣</font> <li><font color="#ff0000">鏄惁鍧楀熬濉厖閮ㄥ垎鏈夎淇敼榪?/font> <li><font color="#ff0000">媯(gè)嫻嬪埌鏈噴鏀炬垨鑰呴噸澶嶉噴鏀懼爢璧勬簮鏃訛紝鏌ョ湅闂鐨勫爢鍧楄鍒嗛厤鏃剁殑璋冪敤鏍?/font></li></ol> <p><font color="#ff0000">鍏跺疄欏靛爢榪樺ソ錛屽畠鏈夎緝寮虹殑瀹炴椂鎬э紝鎵浠ュ茍涓嶉渶瑕佸お澶氭墜宸ヨ皟璇曠殑鎿嶄綔錛岃秺鐣岃鍐欓兘浼?xì)绔嬪崒櫑﹀彂寮傚父迤堜笖涓柇锛屾墍浠ヤ粠榪欑偣鐪嬫潵錛屽畠鏄竴浜涜蔣浠剁敤鏉ユ嫻嬪爢璧勬簮鏄惁姝g‘浣跨敤鐨勫繀澶囪壇鑽瘇 浣嗘槸鐩稿浜庨〉鍫嗭紝鍑嗛〉鍫嗙殑璋冭瘯鍒欓渶瑕佹洿濂界殑鍘諱簡(jiǎn)瑙e噯欏靛爢宸ヤ綔鍘熺悊浜?jiǎn)锛屽洜湄?fù)瀹冩彁渚涚殑鍫嗗潡媯(gè)嫻嬩笉鏄疄鏃剁殑錛屾墍浠ュ彂鐜伴棶棰樺悗錛岄渶瑕佸挶鈥滅簿婀涚殑璋冭瘯鍐呭姛鈥滃幓鎵懼嚭婧愬ご錛屽叧浜庡噯欏靛爢鐨勪笢瑗匡紝涓嬪洖鍐嶈鍚э紝鏁鏈熷緟~</font></p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-05 09:17 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>宸ヤ綔榪欏崐騫?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Tue, 03 Jan 2012 08:32:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163490.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163490.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163490.html</trackback:ping><description><![CDATA[<p>閬ユ兂涓婁竴嬈¤繖涔堟竻闈?rùn)涓嬫潵鎬濊冭繕鏄湪鍘誨勾7鏈堝垵浜?jiǎn)锛屽綋鏃稑q樻槸綆楄糠鑼紝姣旇緝娉勬皵鐨勬槸娌¤兘鍘誨笇鏈涚殑閭d釜灝忕粍錛屼絾鍚庨潰鐪嬫潵騫朵笉綆楀潖浜嬶紝璧風(fēng)爜鐜板湪榪欎釜灝忕粍鍦ㄦ垜鐪嬫潵鏄緢鐞嗘兂鐨勪竴涓姸鎬侊紝鍑濊仛鍔涳紝涓婅繘錛屽垎浜紝鏈夌褰撳垵鍑濊仛鐨勬劅瑙夛紝涓涓埧闂達(dá)紝涓涓洟闃燂紝澶╁ぉ瀣夌毊絎戣劯錛屽嵈涓嶅繕?shù)竴璧瘋拷瀵昏嚜宸辯殑姊︽兂銆傚ぇ鍗婂勾宸ヤ綔涓嬫潵錛屼篃鏄鍥為【涓嬭嚜宸卞崐騫寸殑宸ヤ綔</p> <p> </p> <ul> <li>閲忓寲浠g爜鐨勪綔鐢?/li></ul> <blockquote> <p>鍜屽ぇ瀛︽椂涓嶄竴鏍鳳紝鎴戠殑浠g爜騫朵笉浼?xì)椹┈铏庤檸璧跺畬鍘诲弬鍔犳瘮璧涘悗灏卞純涔嬩笉鐞嗕簡(jiǎn)锛寴q欏茍涓嶆槸涓嬈℃т唬鐮侊紝瀹冮渶瑕佺淮鎶わ紝鏇撮渶瑕佷綋鐜板叾浠峰箋備紭鍖栧畬浜?jiǎn)涓涓姛鑳斤紝鐢氳嚦涓嶈兘璇村嚭瀹冩瘮浠ュ墠濂藉湪鍝噷錛屼篃娌℃湁鏁版嵁鍙噺鍖栵紝鏇磋鍛界殑鏄垜灝辮繖涔堣榪欓」鐩繃鍘諱簡(jiǎn)錛岃姳浜?涓湀鍋氬嚭鏉ョ殑涓滆タ錛屽茍娌℃湁浠諱綍浜虹煡閬擄紝涔熸病浠諱綍浜哄幓鍏蟲(chóng)敞錛屾病鏈変換浣曟祴璇曟暟鎹潵璇存槑鎴戣榪欎釜鍔熻兘鏈変簡(jiǎn)寰堝ぇ紼嬪害涓婄殑榪涘睍銆傚氨鍍忎互鍓嶅鍑濊仛鐨勫▋鍎夸滑璇寸殑錛屽啓鍑烘潵鐨勮蔣浠舵病浜虹敤錛屼笉綆$敤鍒扮殑鎶鏈啀綺炬箾錛屼篃鏄爢搴熶唬鐮併傚垏璁板垏璁幫紝涓嶈濡備綍錛岃閲忓寲鑷繁鐨勫伐浣滐紝鏈夋暟鎹殑瀵規(guī)瘮鍒漢鎵嶇煡閬撴槸榪涙銆?/p></blockquote> <ul> <li>娌熼氬ソ閲嶈</li></ul> <blockquote> <p>浠庢潵鍒板叕鍙稿埌鐜板湪錛岀粓浜庣煡閬撲粈涔堝彨瓚呭嚭鏈熸湜浜?jiǎn)銆俛s涓涓悎鏍肩▼搴忓憳錛屼綘寰楁寜鏃跺畬鎴愯佸ぇ甯冪疆鐨勪換鍔°備絾浜嬫儏榪滆繙涓嶆榪欎簺錛岃佸ぇ寰堝鏃跺欏彧鏄粰浣犳寚鏄庢柟鍚戯紝騫朵笉浼?xì)鍛婅瘔浣犳瘡涓姝ユ庝箞璧幫紝榪欐牱鍋氱殑濂藉鑳藉璁╀綘鑷敱鍙戞尌錛屽潖澶勬槸瀹規(guī)槗榪瘋尗銆傝繖涔熻鏄ソ澶氭柊浜鴻繃鏉ユ椂鍊欑殑閫氱梾錛岃媧炬寚浠誨姟鍚庢棤浠庝笅鎵嬨傝繖涓彲鏄釜娌熼氱殑媧伙紝棣栧厛蹇呴』瑕佺簿紜簡(jiǎn)瑙h佸ぇ鐨勯鏈燂紝璁頒綇錛屾垜榪欓噷璇寸殑鏄簿紜簡(jiǎn)瑙o紝褰撶劧鑰佸ぇ鐨勯鏈熷茍涓嶄竴瀹氬畬鍏ㄦ紜紝浣嗘槸錛屽湪浣犳病娉曡京椹崇敤鏁版嵁杈╅┏浠栦笉姝g‘鐨勬椂鍊欙紝浣犺鍋氱殑灝辨槸鏀墮泦璧勬枡錛岀劧鍚庡垎鏋愬彲琛屾э紝鍐嶇劧鍚庣粰鑰佸ぇ澶嶈堪浣犵殑璁″垝錛屽湪鎴戠湅鏉ワ紝鎴戝叾瀹炲茍涓嶅笇鏈涙垜鐨勮鍒掑拰鑰佸ぇ鐨勯鎯沖畬鍏ㄤ竴鑷達(dá)紝鏇村鐨勮璁烘墠浼?xì)漶旂敓涓涓畬緹庣殑鏂規(guī)錛屽鏋滀綘浠呬粎鍙槸鎸夎佸ぇ璇寸殑鍘誨仛錛岄偅涔堝氨鏄偅涓猶ualified programmer錛屼竴瀹氫竴瀹氳璁頒綇錛屼綘鏈濂藉緱鏈夎嚜宸辯殑瑙傜偣錛岃鐐瑰繀欏誨緱紕版挒錛岀鎾炰腑鎵嶄細(xì)鍙嶆濆悇鏀捐鐐圭殑浼樺姡錛屼竴涓潈琛$殑瑙傜偣鎵嶄細(xì)鍑烘潵銆傚叾瀹為渶姹傜‘璁よ繖涓姝ュ彲鑳藉緢澶氫漢鐪嬫潵寰堝啑浣欙紝浣嗘槸鍦ㄦ垜鐪嬫潵寰堟槸蹇呴渶錛屽洜涓哄彛鍙g浉浼犵殑闇姹傚茍涓嶄細(xì)綺劇‘鍒板摢閲屽幓錛屾墍浠ラ渶瑕佺‘璁ょ‘璁ゅ啀紜錛岀渷鐨勫仛瀹屽悗鍙堝緱鎵撶炕閲嶅仛銆?/p></blockquote> <ul> <li>鎶鏈殑浜嬶紝涓嶅彲緋婃秱</li></ul> <blockquote> <p>鎶鏈殑浜嬫儏錛屽崈涓囧埆緋婃秱錛屼綘鐨勭▼搴廲rash浜?jiǎn)锛屼綘寰楃煡閬撲负鍟ュQ屼綘鐨刵ew澶辮觸浜?jiǎn)锛屼綘涔熷緱鐭ラ亾湄?fù)鍟ワ紝鍥犱負(fù)闅忕潃紼嬪簭瓚婃潵瓚婂ぇ錛屼綘debug鐨勯毦搴︿細(xì)瓚婃潵瓚婇珮錛屾湁闂錛屾棭瑙e喅錛岃屼笖瀵規(guī)墍鏈夐棶棰橈紝浣犲繀欏葷煡鍏舵墍浠ョ劧銆傚綋鐒?dòng)灱岄偅浜涙伓蹇?jī)鐨勬病鏈夋枃妗h屼笖娉ㄩ噴鍙敞閲婁簡(jiǎn)涓鍗婄殑絎笁鏂瑰簱闄ゅ錛岀敤榪欑搴撹繕?shù)笉濡傝嚜宸遍噸鏂板啓涓涓幓錛屼竴鐩磋涓鴻繖縐嶆垚鍝佺殑瀛樺湪灝辨槸涓浮鑲嬨傜紪紼嬮噷闈㈡湁涓鍙ヨ瘽鍙玠onot repeat yourself錛屼綘寰楃鐞嗗ソ騫朵笖鎬葷粨浣犵殑浠g爜錛屾繪湁涓澶╋紝浣犳垨鑰呭埆浜鴻繕鑳界敤寰楀埌銆?/p></blockquote> <ul> <li>鍔ㄦ佹洿鏂頒紭鍏堢駭</li></ul> <blockquote> <p>榪欐槸鎴戞渶澶х殑涓涓瘺鐥呬簡(jiǎn)鍚э紝鍏跺疄鏀懼湪浜掕仈緗戝叕鍙歌繖縐嶅偓榪涘害濂芥瘮鍌懡鑸殑澶х幆澧冧笅錛岃繖綆楁槸鍧忎範(fàn)鎯紝鎴戝伐浣滄ā寮忎竴鑸槸涓茶鍖栦笖鍏充腑鏂ā寮忥紝涓浠朵簨蹇呴』寰楀厛鍋氬畬鎵嶅紑濮嬪仛涓嬩竴浠朵簨鎯咃紝涓棿瀹逛笉寰楁湁浠諱綍娉ㄦ剰鍔涚殑杞Щ銆備絾鏄線寰涓棿浼?xì)鏈夋洿鍔犻噸瑕佺殑浜嬫儏鎻掓挱杩涙潵锛屽綋鐒跺Q屽鏋滃嚭鐜拌繖縐嶆儏鍐甸偅鏄」鐩鐞嗕笂鐨勬?zhèn)插搥錛屼絾浜嬪疄濡傛錛岀瓑寰呯幇鐘舵敼鍙樿繕?shù)笉濡傚幓閫傚簲銆傛竻妤氱殑鐭ラ亾浼樺厛綰э紝榪欏叾瀹為潪甯擱噸瑕佺殑錛屽洜涓哄緢鏈夊彲鑳芥彃鎾繘鏉ョ殑浠誨姟鍏寵仈鍒板叾浠栧悓浜嬶紝澶勭悊涓嶅ソ錛屼細(xì)鍑虹幇欏圭洰鍙戝竷鍓峃涓漢絳変綘鐨勮繖縐嶇姸鍐碉紝璇撮毦鍚偣錛岃繖鏃跺欎綘灝辨垚浜?jiǎn)鍚庤吙锛岄噸鐐规槸鍒汉鎬庝箞鎷栦篃鎷栦笉鍔ㄣ?/p></blockquote> <ul> <li>閿葷偧鍟婇敾鐐?/li></ul> <blockquote> <p>璇村ソ鐨勬瘡鍛ㄤ竴嬈¤繍鍔ㄥ湪宸ヤ綔涓変釜鏈堝悗灝辯儫娑堜簯鏁d簡(jiǎn)錛屾垜鏄偅縐嶅仛浜嬫儏鐨勬椂鍊欏鏄撹蛋鐏叆欖旂殑紼嬪簭鍛橈紝浜嬫儏娌¤В鍐充箣鍓嶈剳瀛愰噷鍏ㄩ儴閮芥槸鐩稿叧鐨勪簨鎯咃紝浣嗗線寰榪欐牱鏄渶娌℃湁鏁堢巼鐨勶紝鍙嶅掑幓榪愬姩榪愬姩錛屽緟絎簩澶╄剳琚嬫竻鏅頒簡(jiǎn)鍙嶅掑氨鏈夌粨鏋滀簡(jiǎn)錛岃佸ぉ鍠冦傘傘傛垜鍏充腑鏂殑鎬濈淮妯″紡浣曟椂鑳借漿榪囨潵銆傘傘傜▼搴忓憳搴旇綆楁槸鏈鏈闇瑕侀敾鐐肩殑緹や綋浜?jiǎn)鍚уQ屼竴澶╁潗10涓皬鏃惰繕?shù)笉甯︿笂鍘曟墍鐨勶紝鍙互閬囪濂藉浜哄湪鍑犲勾鍚庨兘浼?xì)鑴婃绛夊湴鏂瑰紑濮嬪嚭姣涚梾錛屼絾榪欐槸鎴戜滑鍙互閬囪寰楀埌鐨勫晩銆傘傘傜珶鐒墮兘鐭ラ亾浜?jiǎn)锛屼皋Z綍涓嶅幓闃繪鍏跺彂鐢熷憿錛熶笉涓哄埆浜猴紝鍗曟槸涓轟簡(jiǎn)鐜板湪鎴栬呮湭鏉ョ殑瀹朵漢錛屽ソ濂界埍鎶よ嚜宸辯殑韜綋姣斾換浣曚簨鎯呴兘閲嶈錛屾湡寰呮湁涓涓漢錛岋紝錛岋紝鑳藉湪鎴戣蛋鐏叆欖斾箣闄呮妸鎴戞媺鍑烘潵鍘繪墦涓鍦虹悆錛屼互鍓嶆湁灝忓錛屾湁鐣柉錛屾湁钁¤悇鍝ワ紝鑰岀幇鍦ㄥ憿錛熸病鏈変綘浠殑鍩庡競(jìng)閲屾垜涔熻鍋ュ悍鐨勬椿鐫錛屼笉涓哄埆鐨勶紝鍙負(fù)鐣欑潃鍙f皵鎶婅禋鏉ョ殑閽卞ソ濂界殑鑺卞嚭鍘?nbsp; -_-#錛屾寚涓嶅畾鍝ぉ鎴戞毚姣欎簡(jiǎn)閾惰閲岃繕鏈夊ソ鍑犵櫨涓囷紝榪欎斧鐨勪笉浜忓ぇ浜?jiǎn)銆?/p></blockquote> <p>鏆傛椂灝辮繖涔堝鍚э紝甯屾湜榪欎簺鑳藉湪鎴戜粖鍚庡崐騫存湁鎵鏀瑰杽錛屼篃璁稿湪鎴戠湅鏉ワ紝鎶鏈凡緇忎笉鍐嶆槸鍏ㄩ儴錛屽仛浜嬫儏鐨勬柟寮忔墠鏄垜浠婂悗鎯沖悇鍓嶈緢瀛︿範(fàn)鐨勫湴鏂廣?/p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-03 16:32 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璋佸姩浜?jiǎn)鎴戠殑鎸囬?--璁頒竴嬈indbg鍐呭瓨鏂偣鐨勪嬌鐢?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Tue, 03 Jan 2012 07:07:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163486.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163486.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163486.html</trackback:ping><description><![CDATA[<p> </p> <p>鍐欓┍鍔ㄧ殑鏃跺欐湁涓湴鏂硅佹槸钃濆睆,鐪嬩簡(jiǎn)dump鍙戠幇鏁版嵁琚潪娉曠鏀逛簡(jiǎn).</p> <p>鏁版嵁鍒濆鍖栧涓?/p> <p> </p> <p>if(record_set_ptr != NULL )<br>{<br>    record_set_ptr->look_aside_pool_ptr = g_user_control_context.look_aside_pools[type] ;<br>    record_set_ptr->type = type ;<br>    record_set_ptr->buffer_size = notify_count * unit_size_of ;<br>    record_set_ptr->units_count = notify_count ;<br>    record_set_ptr->complete_count = 0 ;<br>}<br></p> <p>鐒跺悗鍦ㄨ皟鐢‥xFreeToNPagedLookasideList浼犲叆record_set_ptr->look_aside_pool_ptr 鐨勬椂鍊欐寕浜?鍙戠幇record_set_ptr->look_aside_pool_ptr宸茬粡琚敼浜?</p> <p> </p> <p>涓轟簡(jiǎn)璺熻釜鏁版嵁鍦ㄥ摢閲岃淇敼浜?鍏堝湪鏁版嵁鍒濆鍖栫殑鍦版柟涓嬫柇,鐒跺悗璁頒笅record_set_ptr->look_aside_pool_ptr 鐨勫湴鍧:0x85c16018</p> <p>瀵硅繖涓唴瀛樹(shù)笅涓柇鐐?</p> <p>1: kd> ba w4 85c16018</p> <p>w琛ㄧず鍦ㄥ啓鍏ユ椂鏂笅,4琛ㄧず鐩戞帶鑼冨洿,鍗曚綅鏄瓧鑺?nbsp; </p> <p>鏁翠釜鍛戒護(hù)鐨勬剰鎬濆氨鏄璋冭瘯鍣ㄥ湪緋葷粺鍐欏叆鍐呭瓨85c16018-85c1601b榪欎釜鍦板潃鑼冨洿鐨勬椂鍊欎腑鏂?</p> <p>OK,鍛戒護(hù)涓嬪畬,F5涓涓嬪氨绔嬮┈鏂笅鏉ヤ簡(jiǎn)</p> <p>1: kd> g<br>Breakpoint 3 hit<br>nt!memcpy+0x33:<br>8053b583 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]</p> <p><br>姝ゆ椂edi鐨勫? <font color="#ff0000">0x85c16018</font></p> <p><font color="#000000"></font> </p> <p><font color="#000000">鏈鍚庣湅涓涓嬪嚱鏁板爢鏍?鍙戠幇鏄瓧絎︿覆鎷瘋礉瓚婄晫瑕嗙洊浜?jiǎn)鍚庨潰鐨勬暟鎹?...  </font></p> <p>鍚庨潰鍙堟兂鍒?鍑洪敊鏃秗ecord_set_ptr->look_aside_pool_ptr 鐨勫兼槸<font color="#ff0000">0x005c0065</font></p> <p><font color="#000000">榪欎箞鏄庢樉鐨勫瓧絎︿覆鐗瑰緛绔熺劧娌℃剰璇嗗埌....涓鐪嬪嚭閿欏煎氨搴旇鐭ラ亾鏄瓧絎︿覆瑕嗙洊閫犳垚鐨?....</font></p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-03 15:07 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>WINDBG鐨勫爢璋冭瘯--浜?jiǎn)瑙EAP緇勭粐http://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html__ay__aySun, 30 Oct 2011 11:05:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.htmlhttp://m.shnenglu.com/ay19880703/comments/159364.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/159364.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/159364.html@浣滆? ay @鏂囩珷鍑哄: cnss-ay鐨勫崥瀹?/a>@Notice: 杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font>

HEAP鐨勬蹇?/h1>

鍫嗘爤鍫嗘爤錛屽湪鎿嶄綔緋葷粺鍐呭瓨?shù)腑鏈変袱绉嶅瓨鍌ńI洪棿錛屼竴涓槸鍫嗭紝涓涓槸鏍堛傚爢涓昏鐢ㄤ簬瀛樺偍鐢ㄦ埛鍔ㄦ佸垎閰嶇殑鍙橀噺錛岃屾爤鍛紝鍒欐槸瀛樺偍鎴戜滑紼嬪簭榪囩▼涓殑涓存椂鍙橀噺銆傚綋鐒舵爤鐨勪綔鐢ㄨ繙涓嶆鐢ㄤ綔瀛樺偍鍙橀噺錛屼絾榪欎笉鏄垜浠繖綃囨枃绔犵殑璁ㄨ鍐呭銆?/p>

聽(tīng)

鍫嗭紙HEAP錛夌殑鍒嗛厤錛屼嬌鐢紝鍥炴敹閮芥槸閫氳繃寰蔣鐨凙PI鏉ョ鐞嗙殑錛屾渶甯歌鐨凙PI鏄痬alloc鍜宯ew銆傚湪寰搴曞眰璧頒竴鐐瑰憿錛岃繖涓や釜鍑芥暟閮戒細(xì)璋冪敤HeapAlloc錛圧tlAllocateHeap錛夈傚悓鏍風(fēng)殑鐩稿叧鍑芥暟榪樻湁HeapFree鐢ㄦ潵閲婃斁鍫嗭紝HeapCreate鐢ㄦ潵鍒涘緩鑷繁鐨勭鏈夊爢銆備笅闈㈡槸榪欎簺鍑芥暟鐨勮皟鐢ㄩ摼錛?/p>

HeapCreate->RtlCreateHeap->ZwAllocateVirtualMemory聽(tīng) (榪欓噷浼?xì)鐩存帴鐢宠涓澶х墖鍐呭瓨,鑷充簬鐢寵澶氬ぇ鍐呭瓨,鐢辮繘紼婸EB緇撴瀯涓殑瀛楁瑙夊緱錛孒eapSegmentReserve瀛楁鎸囧嚭瑕佺敵璇峰澶х殑铏氭嫙鍐呭瓨錛孒eapSegmentCommit鎸囨槑瑕佹彁浜ゅ澶у唴瀛橈紝瀵硅櫄鎷熷唴瀛樼殑鐢寵鍜屾彁浜ゆ蹇典笉娓呮鐨勭闉嬶紝璇峰弬瑙亀indows鏍稿績(jī)緙栫▼鐩稿叧鍐呭~)

HeapAlloc->RtlAllocateHeap錛堣嚦浜庤繖閲岀敵璇風(fēng)殑鍐呭瓨錛岀敱浜嶩eapCreate宸茬粡鐢寵浜?jiǎn)涓澶х墖鍐呭瓨錛屽爢綆$悊鍣ㄨ繖鐗囧唴瀛樹(shù)腑鍒掑垎涓鍧楀嚭鏉ヤ互婊¤凍鐢寵鐨勯渶瑕併傝繖涓姝ョ敵璇鋒搷浣滄槸鍫嗙鐞嗗櫒鑷繁緇存姢鐨勶紝浠呭綋鐢寵鍐呭瓨?shù)笉澶熺殑鏃跺欐墠浼?xì)鍐崑啤璋冪敤ZwAllocateVirtualMemory 錛?/p>

HeapFree->RtlFreeHeap 錛堝浜庨噴鏀劇殑鍐呭瓨錛屽爢綆$悊鍣ㄥ彧鏄畝鍗曠殑鎶婅繖鍧楀唴瀛樻爣蹇椾綅宸查噴鏀捐鍚庡姞鍏ュ埌絀洪棽鍒楄〃涓紝浠呭綋絀洪棽鐨勫唴瀛樿揪鍒頒竴瀹氶榾鍊肩殑鏃跺欎細(xì)璋冪敤ZwFreeVirtualMeMory 錛?/p>

HeapDestroy->RtlDestroyHeap->ZwFreeVirtualMeMory聽(tīng)聽(tīng) 錛堥攢姣佹垜浠敵璇風(fēng)殑鍫嗭級(jí)

濡備綍鎵懼埌鎴戜滑鐨凥EAP淇℃伅錛?/h1>

WINDBG瑙傚療鍫?/p>

婧愮爜錛?/p>

#include "windows.h"

int main()
{
	HANDLE heap_handle = HeapCreate( NULL , 0x1000 , 0x2000 ) ;

	char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) ;

	char *buffer1 = (char*)HeapAlloc(heap_handle , NULL , 121) ;

	HeapFree(heap_handle, 0 , buffer ) ;
	HeapFree(heap_handle, 0 , buffer1 ) ;

	HeapDestroy( heap_handle) ;
	return 0 ;
}

璇ユ簮鐮佺敓鎴愮紪璇戠敓鎴恏eap.exe錛岀劧鍚庣敤windbg璋冭瘯榪欎釜紼嬪簭錛屽湪main鍑芥暟涓嬫柇錛岀揣鎺ョ潃鎵ц絎簲琛岃鍙ワ紝鎵ц緇撴灉濡備笅

0:000> p
eax=002e1ca0 ebx=00000000 ecx=6d29b6f0 edx=00000000 esi=00000001 edi=01033374
eip=01031012 esp=0022fe8c ebp=0022feac iopl=0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) nv up ei pl nz na po nc
cs=001b聽(tīng) ss=0023聽(tīng) ds=0023聽(tīng) es=0023聽(tīng) fs=003b聽(tīng) gs=0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) efl=00000202
heap!main+0x12:
01031012 ff150c200301聽(tīng)聽(tīng)聽(tīng) call聽(tīng)聽(tīng)聽(tīng) dword ptr [heap!_imp__HeapCreate (0103200c)] ds:0023:0103200c={kernel32!HeapCreateStub (769a29d7)}

0:000> p
eax=002c0000 ebx=00000000 ecx=77429897 edx=77498500 esi=00000001 edi=01033374
eip=01031018 esp=0022fe98 ebp=0022feac iopl=0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) nv up ei pl nz na pe nc
cs=001b聽(tīng) ss=0023聽(tīng) ds=0023聽(tīng) es=0023聽(tīng) fs=003b聽(tīng) gs=0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) efl=00000206
heap!main+0x18:
01031018 8945fc聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) mov聽(tīng)聽(tīng)聽(tīng)聽(tīng) dword ptr [ebp-4],eax ss:0023:0022fea8=6d222201
0:000> !heap
Index聽(tīng)聽(tīng) Address聽(tīng) Name聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Debugging options enabled
聽(tīng) 1:聽(tīng)聽(tīng) 00300000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng) 2:聽(tīng)聽(tīng) 00010000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng) 3:聽(tīng)聽(tīng) 00020000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng) 4:聽(tīng)聽(tīng) 002e0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng) 5:聽(tīng)聽(tīng) 002c0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)

HeapCreate鎵ц鐨勮繑鍥炲煎瓨鏀懼湪eax澶勶紝榪欎釜鍑芥暟榪斿洖浜?jiǎn)涓涓爢鍙ユ焺錛?x002c0000銆傜敤!heap鍛戒護(hù)鏌ョ湅鍙互鐪嬪埌絎簲涓爢灝辨槸鎴戜滑鍒涘緩鐨勫爢鍙ユ焺浜?jiǎn)銆?/p>

姣忎釜榪涚▼閮藉瓨鍦ㄥ涓爢錛屾垜浠篃鍙互閫氳繃PEB緇撴瀯鏉ュ緱鍒拌繘紼嬩腑瀛樺湪鐨勫爢錛岀粨鏋滃拰!heap鍛戒護(hù)鏄劇ず鐨勫唴瀹規(guī)槸涓鏍風(fēng)殑銆?/p>

heap!_PEB
聽(tīng)聽(tīng) +0x018 ProcessHeap聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x00300000 Void聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 榪涚▼鐨勯粯璁ゅ爢
聽(tīng)聽(tīng) +0x068 NtGlobalFlag聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 榪欎釜鏍囧織浣嶈褰曚簡(jiǎn)褰撳墠鍫嗚皟璇曟ā寮?0涓烘櫘閫氳皟璇曟ā寮?br />聽(tīng)聽(tīng) +0x078 HeapSegmentReserve : 0x100000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 榪涚▼鍦ㄦ柊寤哄爢鐨勬椂鍊欓粯璁ょ敵璇風(fēng)殑铏氭嫙鍐呭瓨澶у皬
聽(tīng)聽(tīng) +0x07c HeapSegmentCommit : 0x2000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 榪涚▼鍦ㄦ瘡嬈$敵璇鋒彁浜ょ殑铏氭嫙鍐呭瓨澶у皬錛屽湪鎻愪氦鐨勫唴瀛樼敤瀹屽悗錛岃繘紼嬩細(xì)鍙堝湪涓嬈℃彁浜eapSegmentCommit涓寚瀹氱殑鍐呭瓨澶у皬
聽(tīng)聽(tīng) +0x080 HeapDeCommitTotalFreeThreshold : 0x10000聽(tīng)聽(tīng)聽(tīng) ; 褰撻噴鏀劇殑鍐呭瓨澶у皬澶т簬榪欎釜闃鍊鹼紝灝辮繘琛屽唴瀛樿В闄ゆ彁浜ゆ搷浣?br />聽(tīng)聽(tīng) +0x084 HeapDeCommitFreeBlockThreshold : 0x1000聽(tīng)聽(tīng)聽(tīng)聽(tīng) ;聽(tīng) 褰撲竴嬈℃ч噴鏀劇殑鍧楀ぇ灝忚秴榪囪繖涓榾鍊鹼紝灝辮繘琛屽唴瀛樿В闄ゆ彁浜ゆ搷浣滐紝鍙湁褰撴弧瓚寵繖涓や釜鏉′歡鏃舵墠浼?xì)璋冪敤ZwFreeVirtualMeMory 閲婃斁鐗╃悊鍐呭瓨
聽(tīng)聽(tīng) +0x088 NumberOfHeaps聽(tīng)聽(tīng)聽(tīng) : 5聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 褰撳墠榪涚▼鐨勫爢鏁扮洰,榪欎釜鏁扮洰瀵瑰簲鐫!heap鍛戒護(hù)鐨勫爢鏄劇ず涓暟
聽(tīng)聽(tīng) +0x08c MaximumNumberOfHeaps : 0x10聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ; 榪涚▼鎵鑳借繍琛岀殑鏈澶у爢鏁扮洰,鑻ュ爢鏁扮洰瓚呰繃榪欎釜鍊間及璁eapCreate灝卞け璐ヤ簡(jiǎn)鍚?br />聽(tīng)聽(tīng) +0x090 ProcessHeaps聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x77498500聽(tīng) -> 0x00300000 Void ;瀛樺偍鍫嗗彞鏌勭殑鏁扮粍,榪欓噷鎴戜滑鍙互寰楀埌榪涚▼鐨勬墍鏈夊爢鍙ユ焺

鎴戜滑鍙互杈撳叆濡備笅鍛戒護(hù)鏉ユ煡鐪嬬幇鏈夌殑鍫嗗彞鏌?/p>

0:000> dd 0x77498500聽(tīng)
77498500聽(tīng) 00300000 00010000 00020000 002e0000
77498510聽(tīng) 002c0000 00000000 00000000 00000000
77498520聽(tīng) 00000000 00000000 00000000 00000000
77498530聽(tīng) 00000000 00000000 00000000 00000000
77498540聽(tīng) 00000000 77498340 7749bb08 77498220
77498550聽(tīng) 00000000 00000000 00000000 00000000
77498560聽(tīng) 77498220 00317bd0 00000000 00000000
77498570聽(tīng) 00000000 00000000 00000000 00000000

鍙互鐪嬪緱鍒拌繖閲岄潰鐨勫唴瀹瑰拰!heap鍛戒護(hù)鐨勮緭鍑虹粨鏋滄槸涓鏍風(fēng)殑

鑰屽爢鍙ユ焺鐨勫瓨鏀捐寖鍥?浠嶮aximumNumberOfHeaps 涓婃潵鐪?灝辨槸77498500-77498540榪?x40涓瓧鑺傦紝鍥犱負(fù)姣忎釜鍫嗗彞鏌勫崰4涓瓧鑺傦紝0x10涓爢鍙ユ焺鐨勫瓨鏀劇┖闂村氨鏄?x40銆?/p>

HEAP鐨勭粍緇囩粨鏋?/h1>

鍫嗙殑綆$悊錛屾垜浠彲浠ョ悊瑙d負(fù)涓涓唴瀛樻睜錛屽畠鐢寵涓澶у潡絀洪棿錛岀劧鍚庤礋璐f帴綆″簲鐢ㄧ▼搴忕殑鐢寵閲婃斁絳夎姹傘傚彧鏈夊湪鍒涘緩鍫嗭紝閲婃斁鍫嗭紙娉ㄦ剰錛佹槸閲婃斁鍫嗭紝涓嶆槸鍫嗕腑鐨勭┖闂達(dá)紒錛夊湪榪欎箣鍓嶏紝鎴戜滑闇瑕佸鍫嗘湁鍏崇殑鏁版嵁緇撴瀯鍋氫竴浜涜В閲?/p>

鎴戣繖閲岃瀵熷埌鐨凥EAP緇撴瀯錛孒EAP_SEGMENT緇撴瀯鍜孒EAP_ENTRY緇撴瀯閮藉拰杞歡璋冭瘯閲岄潰鎻忚堪鐨勪笉涓鏍鳳紝褰撳勾濂庡摜鍐欒蔣浠惰皟璇曠殑鏃跺欎及璁¤繕娌$敤涓奧IN7鍚с傘傘傛垜鐨勬紨紺虹郴緇熸槸WIN7

HeapCreate鍑芥暟榪斿洖鐨勫爢鍙ユ焺鍏跺疄灝辨槸涓涓寚鍚戝爢綆$悊緇撴瀯鐨勬寚閽堬紝姣忎釜鍫嗛兘浼?xì)娑夊強(qiáng)鍒皹q欐牱涓変釜緇撴瀯錛欻EAP,HEAP_SEGMENT,HEAP_ENTRY

HEAP_ENTRY緇撴瀯錛?/p>

鍦ㄥ爢綆$悊涓紝姣忎竴鍧楃敵璇蜂笅鏉ョ殑鍐呭瓨閮戒細(xì)鏈変笅闈㈡墍紺虹殑鍥哄畾妯″紡錛?/p>

HEAP_ENTRY錛? bytes錛?/p>

鎴戜滑new鎴杕alloc鍒嗛厤鐨勭┖闂?/p>

鍥哄畾濉厖絀洪棿

榪欎釜緇撴瀯鐢ㄦ潵璁板綍鎵鍒嗛厤鐨勭┖闂寸殑淇℃伅錛屽寘鎷敤鎴風(fēng)敵璇風(fēng)殑絀洪棿錛屽~鍏呯殑絀洪棿錛屾墍鍦ㄧ殑孌靛彿絳夌瓑淇℃伅銆傛墍浠ユ垜浠琻ew鎴栬卪alloc鐨勫湴鍧鍑忓幓8灝辨寚鍚戣緇撴瀯銆傜涓夐儴鍒嗙殑鍥哄畾濉厖絀洪棿鏄負(fù)浜?jiǎn)鍐呭瓨瀵归綈鑰岀敓鎴愮殑錛屽綋鐒惰繖閮ㄥ垎絀洪棿榪樻湁涓閮ㄥ垎鏄敤鏉ラ澶栬褰曡繖鍧楀唴瀛樼殑鍏跺畠淇℃伅錛岃繖閲屽氨涓嶈緇嗗仛浠嬬粛浜?jiǎn)銆?/p>

HEAP_SEGMENT緇撴瀯錛?/p>

鎴戜滑鍙互榪欎箞璁や負(fù)錛屽爢鐢寵鍐呭瓨鐨勫ぇ灝忔槸浠ユ涓哄崟浣嶇殑錛屽綋鏂板緩涓涓爢鐨勬椂鍊欙紝緋葷粺浼?xì)榛樿湄?fù)榪欎釜鍫嗗垎閰嶄竴涓鍙?鍙鋒錛岄氳繃鍒氬紑濮嬬殑new鍜宮alloc鍒嗛厤鐨勭┖闂撮兘鏄湪榪欎釜孌典笂鍒嗛厤鐨勶紝褰撹繖涓鐢ㄥ畬鐨勬椂鍊欙紝濡傛灉褰撳垵鍒涘緩鍫嗙殑鏃跺欐寚鏄庝簡(jiǎn)HEAP_GROWABLE榪欎釜鏍囧織錛岄偅涔堢郴緇熶細(xì)涓鴻繖涓爢鍦ㄥ啀鍒嗛厤涓涓錛岃繖涓椂鍊欐柊鍒嗛厤鐨勬灝辯О涓?鍙鋒浜?jiǎn)锛屼互涓嬩互姝ぞc繪帹銆傛瘡涓鐨勫紑濮嬪垵渚挎槸HEAP_SEGMENT緇撴瀯鐨勯鍦板潃錛岀敱浜庤繖涓粨鏋勪篃鏄敵璇風(fēng)殑涓鍧楀唴瀛橈紝鎵浠ュ畠鍓嶉潰涔熶細(xì)鏈変釜HEAP_ENTRY緇撴瀯錛?/p>

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP_ENTRY錛? bytes錛?/p>

鎴戜滑new鎴杕alloc鍒嗛厤鐨勭┖闂?/p>

鍥哄畾濉厖絀洪棿

HEAP_SEGMENT緇撴瀯浼?xì)璁板綍娈电殑涓浜涘熀鏈俊鎭紝璇ユ鐢寵鐨勫ぇ灝忥紝宸茬粡鎻愪氦鍐呭瓨鐨勫ぇ灝忥紝絎竴涓狧EAP_ENTRY緇撴瀯鐨勫叆鍙g偣銆傦紙鎴戣瀵熺湅璨屼技孌電敵璇風(fēng)殑鍐呭瓨騫朵笉浼?xì)涓嬈℃у叏閮ㄦ彁浜わ紝鑰屾槸姣忔鎻愪氦涓涓〉鐨勫ぇ灝忥紝姣斿涓涓澶у皬2涓〉錛岄偅涔堝畠浼?xì)鍏堟彁浜や竴涓〉鍐呭瓨錛岃嫢鐢ㄥ畬浜?jiǎn)鍐嶆彁浜や竴涓〉鐨勫唴瀛橈紝鑻ュ唴瀛樿繕鐢ㄥ畬浜?jiǎn)閭鏂板晦Z竴涓錛岃繖涓柊寤虹殑孌典篃浼?xì)鏄厛鎻愪氦涓涓〉鍐呭瓨銆傦級(jí)浣嗘槸0鍙鋒寰堢壒鍒紝榪欎釜孌電殑璧峰鍦板潃灝辨槸鍫嗗彞鏌勬寚閽堟寚鍚戠殑鍊鹼紝涔熷氨鏄錛?/font>HeapCreate榪斿洖鐨勫爢鍙ユ焺鎬繪槸鎸囧悜0鍙鋒錛屼負(fù)浠涔堝憿錛熷洜涓篐EAP緇撴瀯鏄疕EAP_ENTRY,HEAP_SEGMENT鐨勫悎浣撳姞闀跨増~

HEAP緇撴瀯錛?/p>

HEAP緇撴瀯鍒欐槸璁板綍浜?jiǎn)杩欎釜鍫嗙殑淇℃伅锛寴q欎釜緇撴瀯鍙互鎵懼埌HEAP_SEGMENT閾捐〃鍏ュ彛錛岀┖闂插唴瀛橀摼琛ㄧ殑鍏ュ彛錛屽唴瀛樺垎閰嶇矑搴︾瓑絳変俊鎭侶EAP鐨勯鍦板潃渚挎槸鍫嗗彞鏌勭殑鍊鹼紝浣嗘槸鍫嗗彞鏌勭殑鍊煎張鏄?鍙鋒鐨勯鍦板潃涔熸槸鍫嗗彞鏌勶紝浣曡В錛熷叾瀹炲緢綆鍗曪紝0鍙鋒鐨凥EAP_SEGMENT灝卞湪HEAP緇撴瀯閲岄潰錛孒EAP緇撴瀯綾誨畾涔夊榪欐牱錛?/p>

struct _HEAP

{

_HEAP_ENTRY Entry ; //HEAP_ENTRY緇撴瀯錛岀敤鏉ユ弿榪板瓨鍌℉EAP鍐呭瓨鍧楀ぇ灝忕瓑淇℃伅鐨?

_HEAP_SEGMENT Segment ;  //0鍙鋒鐨勯鍦板潃

鈥︹? //瀵逛簬璇EAP鐨勬弿榪頒俊鎭?

} ;

鍦ㄦ垜浠湅鏉ワ紝鍐呭瓨緇勭粐緇撴瀯搴旇濡備笅鎵紺猴細(xì)

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP

鏇寸‘鍒囩殑璇達(dá)紝HEAP緇撴瀯涓湰韜氨鍖呭惈浜?jiǎn)HEAP_ENTRY鍜孒EAP_SEGMENT錛孒EAP_ENTRY緇撴瀯鏄疕EAP鐨勭涓涓暟鎹垚鍛橈紝HEAP_SEGMENT鏄畠絎簩涓暟鎹垚鍛樸傝屽浜嶩EAP_SEGMENT,瀹冪殑絎竴涓暟鎹垚鍛樹(shù)究鏄疕EAP_ENTRY銆傝繖閲屼負(fù)浜?jiǎn)鏂逛究鐞嗚В锛屾墠鍦ㄥ唴瀛樉l勭粐緇撴瀯涓妸瀹冧滑鎷嗗紑灞曠ず銆傦紙娉細(xì)榪欓噷鏄痺in7鐨勬儏鍐碉紝鍜岃蔣浠惰皟璇曡繖鏈功涓墍鎻忚堪鐨勬湁涓浜涘樊寮傦紝涔熷睘姝e父鐜拌薄錛屾瘯绔熻繖閮ㄥ垎緇撴瀯寰蔣騫舵湭鍏紑錛?/p>

鐢╓INDBG瑙傚療HEAP緇撴瀯

鍦ㄤ箣鍓嶅凡緇忔紨紺轟簡(jiǎn)濡備綍浠嶱EB緇撴瀯涓壘鍒版墍鏈夌殑鍫嗗彞鏌勶紝鍙互鐪嬪埌002c0000渚挎槸鎴戜滑鍒涘緩鐨勫彞鏌勩傜劧鍚庢垜浠墽紺轟緥紼嬪簭鐨勭7琛屼唬鐮併傛墽琛屽畬鍚庣粨鏋滃涓嬶細(xì)

0:000> p
eax=002c0000 ebx=00000000 ecx=77429897 edx=77498500 esi=00000001 edi=01033374
eip=01031026 esp=0022fe8c ebp=0022feac iopl=0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) nv up ei pl nz na pe nc
cs=001b聽(tīng) ss=0023聽(tīng) ds=0023聽(tīng) es=0023聽(tīng) fs=003b聽(tīng) gs=0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) efl=00000206
heap!main+0x26:
01031026 ff1500200301聽(tīng)聽(tīng)聽(tīng) call聽(tīng)聽(tīng)聽(tīng) dword ptr [heap!_imp__HeapAlloc (01032000)] ds:0023:01032000={ntdll!RtlAllocateHeap (774120b5)}
0:000> p
eax=002c0590 ebx=00000000 ecx=774134b4 edx=002c0180 esi=00000001 edi=01033374
eip=0103102c esp=0022fe98 ebp=0022feac iopl=0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) nv up ei pl zr na pe nc
cs=001b聽(tīng) ss=0023聽(tīng) ds=0023聽(tīng) es=0023聽(tīng) fs=003b聽(tīng) gs=0000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) efl=00000246
heap!main+0x2c:
0103102c 8945f0聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) mov聽(tīng)聽(tīng)聽(tīng)聽(tīng) dword ptr [ebp-10h],eax ss:0023:0022fe9c={heap!envp (0103301c)}

鍙互鐪嬪埌EAX淇濆瓨鐨勮繑鍥炲間負(fù)002c0590銆傛垜浠氳繃涓ょ閫斿緞鏉ヨ瀵熸垜浠敵璇風(fēng)殑鍐呭瓨錛岄氳繃!heap鍛戒護(hù)瑙傚療鍜岄氳繃dt鍛戒護(hù)瑙傚療

閫氳繃!heap鍛戒護(hù)瑙傚療

杈撳叆鍛戒護(hù)!heap 鈥揳 2c0590寰楀埌鐨勭粨鏋滃涓嬶細(xì)

0:000> !heap -a 2c0000
Index聽(tīng)聽(tīng) Address聽(tīng) Name聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Debugging options enabled
聽(tīng) 5:聽(tīng)聽(tīng) 002c0000
聽(tīng)聽(tīng)聽(tīng) Segment at 002c0000 to 002c2000 (00001000 bytes committed)
聽(tīng)聽(tīng)聽(tīng) Flags:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00001000
聽(tīng)聽(tīng)聽(tīng) ForceFlags:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00000000
聽(tīng)聽(tīng)聽(tīng) Granularity:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 8 bytes
聽(tīng)聽(tīng)聽(tīng) Segment Reserve:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00100000
聽(tīng)聽(tīng)聽(tīng) Segment Commit:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00002000
聽(tīng)聽(tīng)聽(tīng) DeCommit Block Thres: 00000200
聽(tīng)聽(tīng)聽(tīng) DeCommit Total Thres: 00002000
聽(tīng)聽(tīng)聽(tīng) Total Free Size:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0000013a
聽(tīng)聽(tīng)聽(tīng) Max. Allocation Size: 7ffdefff
聽(tīng)聽(tīng)聽(tīng) Lock Variable at:聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0138
聽(tīng)聽(tīng)聽(tīng) Next TagIndex:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0000
聽(tīng)聽(tīng)聽(tīng) Maximum TagIndex:聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0000
聽(tīng)聽(tīng)聽(tīng) Tag Entries:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00000000
聽(tīng)聽(tīng)聽(tīng) PsuedoTag Entries:聽(tīng)聽(tīng)聽(tīng) 00000000
聽(tīng)聽(tīng)聽(tīng) Virtual Alloc List:聽(tīng)聽(tīng) 002c00a0
聽(tīng)聽(tīng)聽(tīng) Uncommitted ranges:聽(tīng)聽(tīng) 002c0090
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c1000: 00001000聽(tīng) (4096 bytes)
聽(tīng)聽(tīng)聽(tīng) FreeList[ 00 ] at 002c00c4: 002c0618 . 002c0618聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0610: 00088 . 009d0 [100] - free

聽(tīng)聽(tīng)聽(tīng) Segment00 at 002c0000:
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Flags:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00000000
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Base:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0000
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) First Entry:聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0588
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Last Entry:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c2000
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Total Pages:聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00000002
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Total UnCommit:聽(tīng) 00000001
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Largest UnCommit:00000000
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) UnCommitted Ranges: (1)

聽(tīng)聽(tīng)聽(tīng) Heap entries for Segment00 in Heap 002c0000
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0000: 00000 . 00588 [101] - busy (587)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0588: 00588 . 00088 [101] - busy (80)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0610: 00088 . 009d0 [100]
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c0fe0: 009d0 . 00020 [111] - busy (1d)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 002c1000:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00001000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) - uncommitted bytes.

榪欎釜鍛戒護(hù)鍒嗗埆鎻愮偧鍑轟簡(jiǎn)HEAP錛堢豢鑹插尯鍩燂級(jí),HEAP_SEGMENT錛堢孩鑹插尯鍩燂級(jí)鍜孒EAP_ENTRY錛堢伆鑹插尯鍩燂級(jí)緇撴瀯涓殑淇℃伅銆傝櫧鐒跺湪鐏拌壊鍖哄煙涓紝鎴戜滑鎵句笉鍒?c0590錛屼絾鏄壘鍒頒簡(jiǎn)涓涓?c0588錛岃繖涓鏄?c0590-8鐨勭粨鏋滐紝涔熷氨鏄鏈鍙寵竟鐨勫湴鍧鏄瘡涓狧EAP_ENTRY鐨勯鍦板潃錛屾帴鐫00588榪欎釜瀛楁琛ㄧず浜?jiǎn)鍓嶉潰涓涓狧EAP_ENTRY鎵鍗犵敤鐨勫ぇ灝忥紝鍚庨潰鐨?088琛ㄧず榪欎釜鍐呭瓨鍧楃殑鎬誨ぇ灝忥紝鍗蟲(chóng)垜浠敵璇風(fēng)殑鍐呭瓨+HEAP_ENTRY錛?28+8=0x80+0x8=0x88錛夛紝[101]鏄繖鍧楀唴瀛樼殑鏍囧織浣嶏紝鏈鍙寵竟涓浣嶄負(fù)1琛ㄧず璇ュ唴瀛樺潡琚崰鐢ㄣ傜劧鍚巄usy錛?0錛夊氨鏄В閲婅榪欏潡鍐呭瓨鏄鍗犵敤鐨勶紙闈炵┖闂茬殑錛夛紝瀹冪敵璇風(fēng)殑鍐呭瓨?shù)?x80錛岃漿鍖栨垚鍗佽繘鍒舵濂藉氨鏄垜浠敵璇風(fēng)殑128瀛楄妭澶у皬銆?/p>

浣嗘槸榪欓噷鐢╠t _HEAP_ENTRY 2c0588鍛戒護(hù)鍗存病鍔炴硶鏌ョ湅瀵瑰簲鐨勭粨鏋勪俊鎭紝鐪熸槸鎬搲錛屾湁綃囧崥鏂囦篃鎻愬埌win2008涓璈EAP鐩稿叧緇撴瀯涔熸湁鍙橈紝鐪嬫潵鍒癗T6鍚庯紝HEAP緇撴瀯鍙樺緱涓嶅皬錛岃搗鐮亀indbg涓洿鎺t HEAP_ENTRY鏄棤娉曞師濮嬫暟鎹殑浜?jiǎn)锛岃矊浼煎HEAP_ENTRY鍋氫簡(jiǎn)緙栫爜銆?/font>

閫氳繃dt鍛戒護(hù)瑙傚療

鍚屾牱鐨勶紝宸茬煡HEAP鐨勯鍦板潃錛岄偅涔堝厛浠嶩EAP涓嬫墜濂戒簡(jiǎn)錛宒t _HEAP 002c0000鍙互鏄劇ずHEAP鐨勬暟鎹粨鏋?/p>

ntdll!_HEAP
聽(tīng)聽(tīng) +0x000 Entry聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _HEAP_ENTRY
聽(tīng)聽(tīng) +0x008 SegmentSignature : 0xffeeffee聽(tīng)聽(tīng)
聽(tīng)聽(tīng) +0x00c SegmentFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0
聽(tīng)聽(tīng) +0x010 SegmentListEntry : _LIST_ENTRY [ 0x2c00a8 - 0x2c00a8 ]
聽(tīng)聽(tīng) +0x018 Heap聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x002c0000 _HEAP
聽(tīng)聽(tīng) +0x01c BaseAddress聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x002c0000 Void
聽(tīng)聽(tīng) +0x020 NumberOfPages聽(tīng)聽(tīng)聽(tīng) : 2
聽(tīng)聽(tīng) +0x024 FirstEntry聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x002c0588 _HEAP_ENTRY
聽(tīng)聽(tīng) +0x028 LastValidEntry聽(tīng)聽(tīng) : 0x002c2000 _HEAP_ENTRY
聽(tīng)聽(tīng) +0x02c NumberOfUnCommittedPages : 1
聽(tīng)聽(tīng) +0x030 NumberOfUnCommittedRanges : 1
聽(tīng)聽(tīng) +0x034 SegmentAllocatorBackTraceIndex : 0
聽(tīng)聽(tīng) +0x036 Reserved聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0
聽(tīng)聽(tīng) +0x038 UCRSegmentList聽(tīng)聽(tīng) : _LIST_ENTRY [ 0x2c0ff0 - 0x2c0ff0 ]

聽(tīng)聽(tīng) +0x040 Flags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x1000
聽(tīng)聽(tīng) +0x044 ForceFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0
聽(tīng)聽(tīng) +0x048 CompatibilityFlags : 0
聽(tīng)聽(tīng) +0x04c EncodeFlagMask聽(tīng)聽(tīng) : 0x100000
聽(tīng)聽(tīng) +0x050 Encoding聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _HEAP_ENTRY
聽(tīng)聽(tīng) +0x058 PointerKey聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x17c06e63
聽(tīng)聽(tīng) +0x05c Interceptor聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0
聽(tīng)聽(tīng) +0x060 VirtualMemoryThreshold : 0xfe00
聽(tīng)聽(tīng) +0x064 Signature聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0xeeffeeff
聽(tīng)聽(tīng) +0x068 SegmentReserve聽(tīng)聽(tīng) : 0x100000
聽(tīng)聽(tīng) +0x06c SegmentCommit聽(tīng)聽(tīng)聽(tīng) : 0x2000
聽(tīng)聽(tīng) +0x070 DeCommitFreeBlockThreshold : 0x200
聽(tīng)聽(tīng) +0x074 DeCommitTotalFreeThreshold : 0x2000
聽(tīng)聽(tīng) +0x078 TotalFreeSize聽(tīng)聽(tīng)聽(tīng) : 0x13a
聽(tīng)聽(tīng) +0x07c MaximumAllocationSize : 0x7ffdefff
聽(tīng)聽(tīng) +0x080 ProcessHeapsListIndex : 5
聽(tīng)聽(tīng) +0x082 HeaderValidateLength : 0x138
聽(tīng)聽(tīng) +0x084 HeaderValidateCopy : (null)
聽(tīng)聽(tīng) +0x088 NextAvailableTagIndex : 0
聽(tīng)聽(tīng) +0x08a MaximumTagIndex聽(tīng) : 0
聽(tīng)聽(tīng) +0x08c TagEntries聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : (null)
聽(tīng)聽(tīng) +0x090 UCRList聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _LIST_ENTRY [ 0x2c0fe8 - 0x2c0fe8 ]
聽(tīng)聽(tīng) +0x098 AlignRound聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0xf
聽(tīng)聽(tīng) +0x09c AlignMask聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0xfffffff8
聽(tīng)聽(tīng) +0x0a0 VirtualAllocdBlocks : _LIST_ENTRY [ 0x2c00a0 - 0x2c00a0 ]
聽(tīng)聽(tīng) +0x0a8 SegmentList聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _LIST_ENTRY [ 0x2c0010 - 0x2c0010 ]
聽(tīng)聽(tīng) +0x0b0 AllocatorBackTraceIndex : 0
聽(tīng)聽(tīng) +0x0b4 NonDedicatedListLength : 0
聽(tīng)聽(tīng) +0x0b8 BlocksIndex聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x002c0150 Void
聽(tīng)聽(tīng) +0x0bc UCRIndex聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : (null)
聽(tīng)聽(tīng) +0x0c0 PseudoTagEntries : (null)
聽(tīng)聽(tīng) +0x0c4 FreeLists聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _LIST_ENTRY [ 0x2c0618 - 0x2c0618 ]
聽(tīng)聽(tīng) +0x0cc LockVariable聽(tīng)聽(tīng)聽(tīng)聽(tīng) : 0x002c0138 _HEAP_LOCK
聽(tīng)聽(tīng) +0x0d0 CommitRoutine聽(tīng)聽(tīng)聽(tīng) : 0x17c06e63聽(tīng)聽(tīng)聽(tīng)聽(tīng) long聽(tīng) +17c06e63
聽(tīng)聽(tīng) +0x0d4 FrontEndHeap聽(tīng)聽(tīng)聽(tīng)聽(tīng) : (null)
聽(tīng)聽(tīng) +0x0d8 FrontHeapLockCount : 0
聽(tīng)聽(tīng) +0x0da FrontEndHeapType : 0 ''
聽(tīng)聽(tīng) +0x0dc Counters聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _HEAP_COUNTERS
聽(tīng)聽(tīng) +0x130 TuningParameters : _HEAP_TUNING_PARAMETERS
灝卞鏈枃鍓嶉潰鎵榪扮殑錛岀涓涓瓧孌墊槸HEAP_ENTRY緇撴瀯錛屾帴鐫搴旇鏄疕EAP_SEGMENT錛岃繖閲屽彧涓嶈繃鎶奌EAP_SEGMENT緇撴瀯鐨勫瓧孌靛睍寮浜?jiǎn)锛屽彲浠t _HEAP_SEGMENT鏉ヨ瀵熶笅榪欎釜緇撴瀯鐨勫瓧孌?/p>

0:000> dt _heap_segment
ntdll!_HEAP_SEGMENT
聽(tīng)聽(tīng) +0x000 Entry聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : _HEAP_ENTRY
聽(tīng)聽(tīng) +0x008 SegmentSignature : Uint4B
聽(tīng)聽(tīng) +0x00c SegmentFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng) : Uint4B
聽(tīng)聽(tīng) +0x010 SegmentListEntry : _LIST_ENTRY
聽(tīng)聽(tīng) +0x018 Heap聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : Ptr32 _HEAP
聽(tīng)聽(tīng) +0x01c BaseAddress聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : Ptr32 Void
聽(tīng)聽(tīng) +0x020 NumberOfPages聽(tīng)聽(tīng)聽(tīng) : Uint4B
聽(tīng)聽(tīng) +0x024 FirstEntry聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : Ptr32 _HEAP_ENTRY
聽(tīng)聽(tīng) +0x028 LastValidEntry聽(tīng)聽(tīng) : Ptr32 _HEAP_ENTRY
聽(tīng)聽(tīng) +0x02c NumberOfUnCommittedPages : Uint4B
聽(tīng)聽(tīng) +0x030 NumberOfUnCommittedRanges : Uint4B
聽(tīng)聽(tīng) +0x034 SegmentAllocatorBackTraceIndex : Uint2B
聽(tīng)聽(tīng) +0x036 Reserved聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) : Uint2B
聽(tīng)聽(tīng) +0x038 UCRSegmentList聽(tīng)聽(tīng) : _LIST_ENTRY

鍙互鐪嬪埌HEAP緇撴瀯涓伆鑹查儴鍒嗘槸鍜孒EAP_SEGMENT緇撴瀯涓殑瀛楁鏄噸澶嶇殑錛屼篃灝辨槸璇寸伆鑹查儴鍒嗗瓧孌典究鏄疕EAP_SEGMENT緇撴瀯銆傚湪HEAP_SEGMENT緇撴瀯涓紝鎴戜滑鍙互鎵懼埌FirstEntry瀛楁錛岃繖閲屾寚鐨勪究鏄垜浠殑鍒嗛厤鐨勫唴瀛橈紝涓嶈繃HEAP_ENTRY緇撴瀯鏃犳硶瑙傚療錛岃繖閲屼究娌″姙娉曟灇涓懼嚭鎵鏈夌殑HEAP_ENTRY緇撴瀯浜?jiǎn)锛屼絾鏄涓涓嬫濊礬錛?/p>

姣忎釜HEAP_ENTRY鍜屽畠瀵瑰簲鐨勫唴瀛樻垜浠彲浠ョО涓轟竴涓唴瀛樺潡錛岃綆椾笅涓涓唴瀛樺潡闇瑕佺敤鍒扮幇鏈夊唴瀛樺潡涓殑2涓瓧孌碉紝Size鍜孶nsedBytes錛孲ize鐨勫間箻?shù)笂绮掑害锛垶鏄?:000> !heap -a 2c0000鍛戒護(hù)鏄劇ず鐨勪俊鎭腑鐨凣ranularity: 8 bytes瀛楁錛岃繖閲屾槸8瀛楄妭錛夛紝涓嬩竴涓唴瀛樺潡鍦板潃灝辨槸 鏈唴瀛樺潡鍦板潃+Size*8+UnsedBytes銆傚綋鐒惰繖閲岀殑綺掑害鍙互閫氳繃HEAP瀛楁涓殑AlignMask 瀛楁綆楀嚭鏉ャ?/p>

HEAP鐨勫垎閰嶇矑搴?/h1>

鍦℉EAP緇撴瀯涓寚鏄庝簡(jiǎn)鍒嗛厤綺掑害錛岃繖涓垎閰嶇矑搴︽槸璇存瘡嬈″爢鍒嗛厤鐨勬椂鍊欙紝閮戒互榪欎釜綺掑害涓烘渶灝忓崟浣嶏紝榪欓噷鐪嬪埌綺掑害涓?瀛楄妭銆傛墍浠ヨ繖閲屽氨鏈変簡(jiǎn)絎簩嬈″垎閰嶅唴瀛樼殑瀹為獙錛屾垜浠紼嬪簭鎵ц絎?琛岋紝鐒跺悗鐢?heap -a 002c0000瑙傚療鍒嗛厤鎯呭喌

Heap entries for Segment00 in Heap 002c0000
聽(tīng)聽(tīng)聽(tīng) 002c0000: 00000 . 00588 [101] - busy (587)
聽(tīng)聽(tīng)聽(tīng) 002c0588: 00588 . 00088 [101] - busy (80)
聽(tīng)聽(tīng)聽(tīng) 002c0610: 00088 . 00088 [101] - busy (79)
聽(tīng)聽(tīng)聽(tīng) 002c0698: 00088 . 00948 [100]
聽(tīng)聽(tīng)聽(tīng) 002c0fe0: 00948 . 00020 [111] - busy (1d)
聽(tīng)聽(tīng)聽(tīng) 002c1000:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00001000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) - uncommitted bytes.

榪欓噷鍙互鐪嬪嚭澶氬嚭浜?jiǎn)涓涓崰鐢ㄥ潡錛屽ぇ灝忔槸0x79錛?21錛?bytes錛屼絾鏄疄闄呭垎閰嶇殑澶у皬榪樻槸0x 88 錛?28錛塨ytes錛岃繖鏄洜涓虹郴緇熸槸浠? bytes涓虹矑搴﹀垎閰嶇殑錛屾墍浠ヤ負(fù)榪欏潡121 bytes鐨勫唴瀛樿嚜鍔ㄥ~鍏呬簡(jiǎn)7涓瓧鑺傦紝鍙鐢寵121 bytes鍜岀敵璇?28 bytes鎵浣跨敤鐨勭┖闂存槸涓鏍風(fēng)殑銆?/font>

HEAP鐨勯噴鏀懼拰閿姣?/h1>

鎵ц浜?1琛屽拰12琛岀殑浠g爜鍚庯紝鍫嗕腑鐨勫唴瀹瑰垎鍒涓嬶細(xì)

鎵ц11琛屼唬鐮佺殑鍫嗘儏鍐?/strong>

FreeList[ 00 ] at 002c00c4: 002c06a0 . 002c0590聽(tīng)
聽(tīng)聽(tīng)聽(tīng) 002c0588: 00588 . 00088 [100] 鈥?free聽(tīng)聽(tīng) 錛涚┖闂插垪琛ㄤ腑澶氬嚭浜?jiǎn)涓鍧楀唴瀛?/font>
聽(tīng)聽(tīng)聽(tīng) 002c0698: 00088 . 00948 [100] 鈥?free聽(tīng)聽(tīng) 錛涚┖闂插唴瀛橈紝絀洪棽絀洪棿涓?48

Heap entries for Segment00 in Heap 002c0000
002c0000: 00000 . 00588 [101] - busy (587)
002c0588: 00588 . 00088 [100]聽(tīng)聽(tīng) 錛涘師鍏堢殑榪欏潡鍐呭瓨閲婃斁鎺変簡(jiǎn)
002c0610: 00088 . 00088 [101] - busy (79)
002c0698: 00088 . 00948 [100]聽(tīng)聽(tīng)聽(tīng) ; 絀洪棽鍐呭瓨
002c0fe0: 00948 . 00020 [111] - busy (1d)
002c1000: 00001000 - uncommitted bytes.

鎵ц12琛屼唬鐮佺殑鍫嗘儏鍐?/strong>

FreeList[ 00 ] at 005c00c4: 005c0590 . 005c0590聽(tīng)
聽(tīng)聽(tīng)聽(tīng) 005c0588: 00588 . 00a58 [100] 鈥?free 錛涘洖鏀朵簡(jiǎn)buffer1鐨勫唴瀛樺悗錛岀敱浜庣敱浜庣┖闂插唴瀛樻槸榪炵畫(huà)鐨勶紝鎵浠ョ洿鎺ュ悎騫舵垚涓鍧楀唴瀛樸傚彲浠ョ湅鍒頒箣鍓嶅唴瀛榝ree絀洪棿鏄?48錛岀幇鍦ㄥ悎騫朵簡(jiǎn)浠ュ悗渚挎槸948+88+88=a58,涔熷氨鏄綋鍓嶅唴瀛樺ぇ灝?/font>

Heap entries for Segment00 in Heap 005c0000
聽(tīng)聽(tīng)聽(tīng) 005c0000: 00000 . 00588 [101] - busy (587)
聽(tīng)聽(tīng)聽(tīng) 005c0588: 00588 . 00a58 [100]
聽(tīng)聽(tīng)聽(tīng) 005c0fe0: 00a58 . 00020 [111] - busy (1d)
聽(tīng)聽(tīng)聽(tīng) 005c1000:聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 00001000聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) - uncommitted bytes.

鏈鍚庢墽琛?4琛屼唬鐮?瀵瑰爢榪涜閲婃斁,閲婃斁鍚庢垜浠氳繃!heap涔熷彲浠ョ湅鍒板彧鏈?涓爢浜?鎴戜滑鐢寵鐨勫爢琚噴鏀句簡(jiǎn).

0:000> !heap
Index Address Name Debugging options enabled
1: 00300000
2: 00010000
3: 00020000
4: 002e0000

聽(tīng)

鑷充簬HEAP_ENTRY緇撴瀯鐨勯棶棰?鏈夋椂闂村湪璋冭瘯鐪嬬湅鏄庝箞鍥炰簨鍚鍙﹀錛岃繖閲岃鏄庝笅錛宯ew鍜宮alloc鍐呴儴閮戒細(xì)璋冪敤HeapAlloc鏉ョ敵璇峰唴瀛橈紝浣嗘槸鍫嗗彞鏌勪粠鍝潵鍛紵瀹冧細(xì)媯(gè)嫻媉crtheap鍙橀噺鏄惁涓虹┖錛岃嫢涓嶄負(fù)絀哄垯鎷縚crtheap鍙橀噺鏉ヤ綔涓鴻嚜宸辯殑鍫嗗彞鏌勫幓璋冪敤HeapAlloc

鍙傝冿細(xì)

杞歡璋冭瘯聽(tīng)聽(tīng)聽(tīng) 寮犲閾?/p>

MSDN聽(tīng)聽(tīng)聽(tīng)

React OS



__ay 2011-10-30 19:05 鍙戣〃璇勮
]]>tp-wn821n椹卞姩 for aircrack錛坲buntu錛?/title><link>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Sun, 23 Oct 2011 07:23:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/158923.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/158923.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/158923.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: <a target="_blank">cnss-ay鐨勫崥瀹?/a> <font color="#ff0000">@Notice: 杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font></p> <p> </p> <p>鏄ㄥぉ鍦ㄤ含涓滀笂涔扮殑TP-LINK WN821N v3鏃犵嚎緗戝崱錛屼粖澶╁氨鍒版墜浜?鍙戣揣鐪熷揩~~鍑屾櫒緇欐垜鍙戞潵閭歡璇村凡閫佽揣錛屾敞鎰忔煡鏀躲傘傘傘傛睏~~</p> <p>榪欎釜鏃犵嚎緗戝崱鏄垜鐨勫紑鍙戠綉鍗★紝鑺變簡(jiǎn)涓涓嬪崍鐮旂┒鎵嶇炕鍒扮殑涓涓猚ommview for wifi鍜宎ircrack閮借兘浣跨敤鐨勭綉鍗★紝鐢ㄧ殑atheros鐨勮姱鐗囷紝鍏蜂綋鍨嬪彿鍙互鍦?a >http://linuxwireless.org/en/users/Drivers/ath9k_htc/devices</a>榪欎釜緗戝潃涓婃煡鍒般?/p> <p>鍙儨鎴戠殑鏄痷buntu 10.04鐨勭増鏈紝媯(gè)嫻嬩笉鍒拌繖涓綉鍗★紝鍙兘鑷繁鍔ㄦ墜瑁呬簡(jiǎn)</p> <p>鎴戣繖閲屽畨瑁呯殑鏄痑th9k_htc</p> <p>澶氫簭浜?jiǎn)涓嬮潰杩欎袱绡囨枃绔犲Q岀綉鍗℃垚鍔熷湪ubuntu涓婇潰璺戣搗鏉ヤ簡(jiǎn)</p> <p><a target="_blank">ath9k_htc錛氫竴浜沀SB鏃犵嚎緗戝崱鐨勫師鐢熼┍鍔?/a></p> <p><a target="_blank">ath9k_htc USB鏃犵嚎緗戝崱椹卞姩瀹夎</a></p> <p>涓嶈繃涓婇潰璇磋矊浼煎湪UBUNTU 11.04涓氨鍙互璇嗗埆鍑烘潵錛屾垜涔熶笉鏅撳緱 榪欎釜寰呴獙璇併?/p> <p>璇曚簡(jiǎn)涓媋ircrack</p> <p>sudo aircmon start wlan%d 錛堣矊浼肩綉鍗″悕瑙f瀽鏈夐敊銆傘傘傘傜珶鐒剁粰鎴戣В鏋愭垚wlan%d錛佷笉榪囦篃鑳界敤錛屽皢灝卞惂~錛?/p> <p>鎵撳紑wireshark鐩戝惉mon0榪欎釜铏氭嫙緗戝崱錛岀粨鏋滃涓?/p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/06eabf0f0437_B9AE/image_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/06eabf0f0437_B9AE/image_thumb.png" width="592" height="284"></a></p> <p>鍢垮樋  鍙互浣跨敤錛岄偅鎺ヤ笅鏉ュ彲浠ョ戶緇瓀ireless fundamental緋誨垪鏂囩珷浜?jiǎn)锛宯octilio榪欎釜寮婧愰」鐩篃寮濮嬫鍏ュ紑鍙戦樁孌典簡(jiǎn)</p><img src ="http://m.shnenglu.com/ay19880703/aggbug/158923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2011-10-23 15:23 <a href="http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎶妛indows鐨刅IM閰嶇疆鏂囦歡鎼埌ubuntu涓?/title><link>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Sat, 22 Oct 2011 16:34:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/158903.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/158903.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/158903.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: cnss-ay.com <font color="#ff0000">@Notice: 杞澆璇鋒敞鏄庡嚭澶?/font></p> <p>涔嬪墠鍐欎簡(jiǎn)涓綃囨枃绔? <a >VIM鈥撴寚瀹氳嚜宸辯殑VIM宸ヤ綔鐩綍</a></p> <p>浠婂ぉ鍑嗗鎶妛indows涓嬬殑vim閰嶇疆寮勫埌铏氭嫙鏈轟腑鐨剈buntu鏉?浜庢槸灝辨湁浜?jiǎn)杩櫧媷鏂囩?浠呰褰曚笅鏈熼棿閬囧埌鐨勯棶棰?/p> <p> </p> <p>1. 鎶妛indows鏂囦歡澶規(guī)槧灝勫埌ubuntu涓?/p> <p>鎴戣繖閲屾槸鐢ㄤ簡(jiǎn)vmware tools鏉ユ悶瀹氱殑,鍏堝畨瑁卾mware tools,鐒跺悗鍦╡dit virtual mechine setting涓殑options閲岄潰鏈変釜shared floders,鎶婂畠璁句負(fù)always enable鐒跺悗鍦ㄤ笅闈㈡坊鍔犺嚜宸辮鍏變韓鐨勭洰褰曞氨鏄簡(jiǎn),鎴戝湪榪欓噷闈㈡妸鎴戜箣鍓嶇殑$MY_VIM_DIR榪欎釜鐜鍙橀噺鐨勭洰褰曟坊鍔犺繘鍘諱簡(jiǎn),鎴戠殑floder name涓簐im.鐒跺悗鍦ㄨ櫄鎷熸満鐨刄BUNTU涓嬮潰,鍒?mnt/hgfs/vim鐩綍涓嬪氨鍙互璁塊棶鎴戠殑vim閰嶇疆鏂囦歡浜?絎竴姝ユ悶瀹?娌′粈涔堝ぇ闂.</p> <p> </p> <p>2.鐒跺悗鍦ㄧ幆澧冨彉閲忎腑娣誨姞$MY_VIM_DIR(/mnt/hgfs/vim)鍜?VIMINIT(source $MY_VIM_DIR/_vimrc)鐜鍙橀噺,鎴戣繖閲屾煡浜?jiǎn)涓嬭祫鏂?鍦▇/.bashrc榪欎釜鏂囦歡涓姞涓婅繖涓ゅ彞璇濓細(xì)</p> <p>export MY_VIM_DIR=/mnt/hgfs/vim</p> <p>export VIMINIT="source $MY_VIM_DIR/_vimrc"</p> <p>鍦ㄦ瘡嬈″惎鍔╞ash鐨勬椂鍊欎細(xì)鎵ц~/.bashrc榪欎釜鏂囦歡錛屾垜浠殑鐜鍙橀噺灝辮嚜鍔ㄨ榪涘幓浜?jiǎn)锛屼絾鏄瘶q欎釜璁劇疆鍙褰撳墠鐢ㄦ埛鏈夋晥錛屾崲涓敤鎴鋒垜浠緗殑鐜鍙橀噺灝變笉璧蜂綔鐢ㄤ簡(jiǎn). 濡傛灉浣犲笇鏈涘鍏ㄥ眬鐢ㄦ埛閮芥湁鏁?閭d箞鍙互鍘諱慨鏀?etc/profile鏂囦歡,鍦ㄦ枃浠舵湯灝懼姞涓婅繖涓ゅ彞璇?</p> <p> </p> <p>3.濂戒簡(jiǎn),涓鍒囧氨緇?鍦ㄦ帶鍒跺彴鍚姩VIM, 澶辮觸! 鎻愮ず璇存嫻嬪埌鏈塣M, 鏃犳硶瑙f瀽.鏅?windows鏍煎紡緙栫爜闂....</p> <p>瑙e喅鏂規(guī)硶寰堢畝鍗?鍏堣窇鍘昏涓猼ofrodos,鍛戒護(hù): sudo apt-get install tofrodos</p> <p>鐒跺悗鎵цsudo fromdos -p $MY_VIM_DIR/*/*.vim</p> <p>鎶婇厤緗枃浠剁洰褰曚笅鐨勬墍浠?vim鏂囦歡鐨勬崲琛岄兘杞垚unix鏍煎紡鐨?/p> <p>鐒跺悗鍦ㄦ垜浠殑_vimrc涓姞鍏ヤ竴鍙ヨ瘽: set fileformat=unix</p> <p>鍛婅瘔vim鎴戜滑鎹㈣絎︾敤unix鏍煎紡鐨?/p> <p>鍦╳indows涓? gvim鍙互璇嗗埆榪欑甯︽湁unix鎹㈣絎︾殑vimrc鏂囦歡</p> <p>OK,闂瑙e喅</p> <p> </p> <p>4.鎵цsudo vim, 鏅?... 绔熺劧娌℃湁鍔犺澆鎴戠殑_vimrc鏂囦歡,鑰屾槸杞屽姞杞戒簡(jiǎn)榛樿鐨?vimrc鏂囦歡,涔熷氨鏄2涓緗殑鐜鍙橀噺涓嶈搗浣滅敤</p> <p>鐒跺悗鎯沖彲鑳芥槸sudo鐢ㄧ殑鏄痳oot,涓嶄細(xì)緇ф壙鎴戣繖涓敤鎴風(fēng)殑鐜鍙橀噺,OK  鎴戝湪/etc/profile涓緗幆澧冨彉閲忔誨彲浠ヤ簡(jiǎn)鍚?/p> <p>鐧誨嚭鍚庣櫥鍏?鐪嬫晥鏋?/p> <p>鏅?.. 榪樻槸涓嶈</p> <p>鐒跺悗鐧懼害浜?jiǎn)涓浜?鍘熸潵鍦╯udo鍛戒護(hù)鍑轟簬瀹夊叏鎬ц冭檻,鎵ц鏈熼棿浼?xì)鎶婄幆澧冨彉閲弐eset,鐒跺悗淇濈暀鍙俊鐨勭幆澧冨彉閲?姣斿$PATH榪欑鍙橀噺</p> <p>閭d箞闂鎵懼埌灝卞ソ鍔炰簡(jiǎn),鏈夊嚑縐嶆柟娉?/p> <p>a. 浣跨敤sudo -s鍛戒護(hù)錛屾寚鍑簊udo緇ф壙shell鐜鍙橀噺</p> <p>b. 鎵цvisudo鍛戒護(hù), 鎶奃efaults env_reset鏀規(guī)垚Defaults !env_reset銆?紱佹sudo瀵圭幆澧冨彉閲忛噸緗紝鍥犱負(fù)鎴戞槸鍦ㄨ櫄鎷熸満涓婁釜浜虹敤ubuntu鍋氬紑鍙?鎵浠ョ敤鐨勮繖縐嶆柟娉?鑻ュ湪澶氫漢鍏變韓浣跨敤鐨勬搷浣滅郴緇熶笂,榪樻槸鎺ㄨ崘浣跨敤a鏂規(guī)硶瀹夊叏浜?/p><img src ="http://m.shnenglu.com/ay19880703/aggbug/158903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2011-10-23 00:34 <a href="http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢╲im緙栬緫moinhttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.html__ay__aySat, 22 Oct 2011 16:32:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.htmlhttp://m.shnenglu.com/ay19880703/comments/158901.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/158901.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/158901.html@浣滆? ay @鏂囩珷鍑哄: cnss-ay.com @Notice: 杞澆璇鋒敞鏄庡嚭澶?/font>

 

鏈榪戝湪灝濊瘯鐢╩oin wiki鏉ュ仛鍗忓悓寮鍙戯紝鐩存帴鐢╩oin鑷甫鐨勭紪杈戝櫒澶笉鐖戒簡(jiǎn)錛屽瓧浣撻毦鐪嬩笉璇達(dá)紝榪樻病娉曠潃鑹詫紝鐪嬬潃涓嶈垝鏈嶃?/p>

鐒跺悗鍘繪悳绱簡(jiǎn)涓媣im涓浉鍏砿oin鐨勬彃浠訛紝鎯充笉鍒拌繕鐪熸湁錛?/p>

 

棣栧厛鏄繖涓?a >editmoin錛岀敤python鍐欑殑錛屽彲浠ラ氳繃榪欎釜鎻掍歡鏉ョ洿鎺ユ搷浣渕oin鐨勯〉闈紝浣嗘槸鎴戣繖閲屾槸windows緋葷粺錛屽畠鑰佽涓嶅埌鎴戠殑閰嶇疆鏂囦歡銆傝繖涓柟娉昹inux涓嬬殑鐢ㄦ埛鍙互鐢紝鎴戝氨涓嶈鍜紝鎵浠ヤ綔緗紝閲嶆柊瀵繪壘鍏跺畠鏂規(guī)硶銆?/p>

 

鐒跺悗鍘籱oin涓婚〉涓婄湅錛屼笂闈㈡帹鑽愪簡(jiǎn)涓涓猣irefox鐨勬彃浠訛紝鍙互浣跨敤鎸囧畾緙栬緫鍣ㄦ潵緙栬緫欏甸潰鍐呭錛佹彃浠跺湴鍧鍦ㄨ繖錛?a s All Text! 

榪欐鎻掍歡涓綘鎸囧畾vim涓虹紪杈戝櫒灝卞彲浠ヤ簡(jiǎn)錛岀劧鍚庡湪緙栬緫鐨勬椂鍊欐縺媧昏鎻掍歡鍗沖彲錛屽畠浼?xì)甯綘鎶婂唴瀹瑰鍒跺埌vim涓紝緙栬緫瀹屽叧闂悗浼?xì)鎶婁慨鏀瑰簲鐢ㄥ埌缃憴咫娂栬緫鍣ㄥ唴锛屽緢濂界敤鐨勮~~鍝堝搱

 

姝ゅ錛屽湪moin瀹樼綉涓婃彁鍒扮殑vim鎻掍歡moin.vim鍙互瀵筸oin wiki璇硶榪涜楂樹(shù)寒鏄劇ず錛屼絾鏄敤鐨勬椂鍊欐敞鎰忥紝璇鋒妸moin.vim涓殑 hi clear  榪欎竴鍙ヨ瘽娉ㄩ噴鎺?鍚﹀垯vim涓厤緗殑涓婚?shù)細(xì)澶辨?/p>

__ay 2011-10-23 00:32 鍙戣〃璇勮
]]>
VIM 鈥?鎸囧畾鑷繁鐨刅IM宸ヤ綔鐩綍http://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.html__ay__ayFri, 07 Oct 2011 13:03:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.htmlhttp://m.shnenglu.com/ay19880703/comments/157716.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/157716.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/157716.html

聽(tīng)

@Author錛歛y聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)@Date錛?011-10-07聽(tīng)聽(tīng)聽(tīng)聽(tīng)@鏂囩珷鍑哄錛?a >http://cnss-ay.com

@Notice錛氳漿杞借娉ㄦ槑浣滆呬俊鎭紒

聽(tīng) 聽(tīng)

鍦ㄤ嬌鐢╲im鐨勮繃紼嬩腑涓紝鎴戝彂鐜版垜鐨剉im閰嶇疆瑕佽漿縐誨埌windows涓婂緢楹葷儲(chǔ)錛屽洜涓烘垜鐨勬彃浠跺拰vim鎻掍歡鏀懼湪vim瀹夎鐩綍涓嬶紝鍜寁im鍘熼厤鐨勬彃浠舵販涓璧蜂簡(jiǎn)銆傝屼笖vimrc鏂囦歡涔熻鎴戞敼鐨勫緢涔憋紝鏀懼埌windows涓婇潰鏈繀鑳藉鐩存帴浣跨敤銆傛墍浠ュ氨鏈変簡(jiǎn)榪欑瘒鏂囩珷錛岃璁哄浣曟寚瀹氱殑涓涓嚜宸辯殑鏂囦歡澶癸紝vim浠庤繖鏂囦歡澶逛腑杞藉叆鎴戠殑鎻掍歡鍜岃澆鍏ュ垵濮嬪寲鏂囦歡vimrc銆?

聽(tīng) 聽(tīng)

鐢ㄨ繃vim鐨勯兘鏅撳緱錛寁im鍦ㄥ垵濮嬪寲涔嬪浼?xì)铦插叆vimrc鏂囦歡錛屽湪windows涓嬭繖涓枃浠舵槸_vimrc錛屽湪linux涓嬫槸.vimrc錛屾垜浠彲浠ヤ慨鏀硅繖涓枃浠舵潵瀹氬埗鎴戜滑鐨勫垵濮嬪寲鎿嶄綔銆備絾鏄垜浠繀欏誨緱鎶婅繖涓獀imrc鏂囦歡鏀懼湪鎸囧畾鐨勪綅緗墠鍙互琚玽im媯(gè)嫻嬪埌錛岃繖浜涗釜璺緞鍒嗗埆鏄?VIM,$VIMRUNTIME,$HOME榪欎笁涓幆澧冨彉閲忎笅鎵鎸囩殑璺緞銆傝繖閲屾湁涓ょ鏂規(guī)硶錛?

1 淇敼$HOME鐨勮礬寰勶紝鎶婅繖涓幆澧冨彉閲忔寚鍚戞垜浠嚜宸卞畾涔夌殑璺緞錛?VIM鍜?VIMRUNTIME鎸囧悜鐨勮礬寰勫彲鑳絭im榪樻湁鍏跺畠鐢ㄩ旓紝鏈濂藉埆鏀廣備絾鏄慨鏀?HOME涔熶笉鏄緢濂斤紝鐗瑰埆鏄痩inux涓嬶紝寰堝紼嬪簭閮芥槸渚濊禆浜?HOME鐜鍙橀噺鐨勩?

聽(tīng) 聽(tīng)

2鎸囧畾$VIMINIT錛屾垜鏄畾涔変簡(jiǎn)涓涓?MY_VIM_PATH鐨勭幆澧冨彉閲忥紝榪欓噷闈㈠瓨?shù)簡(jiǎn)鎴慥IM閰嶇疆鏂囦歡鍜屾彃浠剁殑鐩綍鍦板潃錛岀劧鍚?VIMINIT涓殑鍐呭鏄細(xì)

source聽(tīng)$MY_VIM_PATH/_vimrc

鍦╲im鍒濆鍖栦箣鍒濅細(xì)鏌ョ湅$VIMINIT鏈夋病鏈夎瀹氫箟錛岃嫢琚畾涔変簡(jiǎn)灝辨斁寮冨悗闈㈣澆鍏imrc鐨勬搷浣滐紝杞屾墽琛?VIMINIT鍙橀噺鍐呯殑鎿嶄綔銆傚綋鐒朵篃鍙互璁劇疆$MYVIMRC鐨勭幆澧冨彉閲忎負(fù)$MY_VIM_PATH/_vimrc錛寁im鍚屾牱浼?xì)鍏堣浇鍏?MYVIMRC鍙橀噺涓寚瀹氱殑vimrc鏂囦歡銆傚彧鏈夊綋榪欎袱涓幆澧冨彉閲忛兘娌″畾涔夌殑鏃跺檝im鎵嶅洖鍘誨墿涓嬬殑鐩綍涓壘vimrc鏂囦歡銆?

娉細(xì)鍦╳indows涓病娉曞垱寤?vimrc鐨勬枃浠訛紝鎵浠ュ彧鑳界敤_vimrc浠f浛涔嬨?

聽(tīng) 聽(tīng)

鍏充簬濡備綍璁劇疆鎻掍歡錛屽府鍔╂枃妗g殑鏌ユ壘璺緞

鍦╲imrc涓姞鍏ュ涓嬭鍙ュ嵆鍙?

set runtimepath=$MY_VIM_PATH,$VIMRUNTIME

鍦╲im榪愯鏃訛紝浼?xì)鍦╮untimepath鍙橀噺涓褰曠殑璺緞涓幓鎵懼姞杞芥彃浠訛紝鑳屾櫙鑹茬瓑鍐呭銆?

聽(tīng) 聽(tīng)

聽(tīng) 聽(tīng)

聽(tīng)

聽(tīng)

聽(tīng)



鏂囩珷鏉ユ簮錛?a href=http://cnss-ay.com/?p=43>http://cnss-ay.com/?p=43

__ay 2011-10-07 21:03 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产精品日韩精品欧美在线| 在线亚洲精品福利网址导航| 亚洲视频1区| 亚洲黄色精品| 亚洲电影免费| 久久久综合精品| 久久久av毛片精品| 老司机精品导航| 欧美日韩不卡一区| 国产精品日韩精品| 黑人一区二区| 日韩一区二区久久| 欧美在线观看网址综合| 免费91麻豆精品国产自产在线观看| 欧美jjzz| 亚洲一二三四区| 久久久久久一区| 欧美日韩一区精品| 韩国美女久久| 亚洲尤物精选| 欧美激情一区二区三区四区| 在线亚洲国产精品网站| 久久国产精品黑丝| 欧美日韩三区| 亚洲国产91精品在线观看| 亚洲永久精品国产| 欧美激情一区在线| 欧美伊人久久大香线蕉综合69| 欧美成人a∨高清免费观看| 国产精品视频观看| 亚洲最新合集| 欧美激情1区| 久久精品中文字幕一区二区三区| 欧美精品久久久久久久久老牛影院| 国产伦精品一区二区三区高清版| 亚洲日本免费| 美女日韩欧美| 久久国产免费| 国产精品久久久久久久电影| 亚洲激情二区| 蜜桃久久av一区| 午夜免费在线观看精品视频| 欧美午夜不卡| 99国内精品| 欧美激情综合色| 久久久久久久综合狠狠综合| 国产精品资源| 亚洲自拍偷拍一区| 日韩视频精品在线| 欧美理论电影在线观看| 尤物yw午夜国产精品视频明星| 欧美在线亚洲一区| 亚洲一区二区三区久久| 欧美丝袜一区二区三区| 99精品99| 日韩视频免费观看| 欧美日韩第一页| 亚洲剧情一区二区| 亚洲黄色小视频| 欧美成人精品福利| 亚洲三级视频| 99精品欧美一区二区三区综合在线| 久久夜色精品国产欧美乱极品| 免费黄网站欧美| 亚洲精品国产精品国产自| 浪潮色综合久久天堂| 国产一区二区高清| 久久久久久网站| 久久av一区二区| 影音国产精品| 欧美激情欧美狂野欧美精品| 欧美成人蜜桃| 亚洲精品中文字幕在线| 亚洲精品综合久久中文字幕| 欧美日韩国产高清| 午夜精品久久久久久99热| 午夜免费在线观看精品视频| 国产精品久久久久久妇女6080 | 久久国产精品亚洲77777| 欧美特黄视频| 亚洲欧美日本日韩| 欧美在线视频导航| 亚洲第一页在线| 亚洲欧洲精品一区二区三区不卡 | 亚洲片在线观看| 亚洲精选视频在线| 国产精品视频免费一区| 久久综合一区二区| 午夜精品在线| 国产一区二区视频在线观看| 欧美成人精品激情在线观看| 欧美福利在线观看| 亚洲综合国产精品| 久久午夜精品一区二区| 中日韩美女免费视频网站在线观看| 在线亚洲欧美| 在线国产欧美| 亚洲一区二区在线播放| 亚洲国产精品久久久久秋霞影院| 日韩视频中文| 黄色一区二区三区| 一区二区精品国产| 在线观看一区视频| 亚洲欧美激情视频在线观看一区二区三区 | 久久成年人视频| 欧美日韩不卡| 欧美成人午夜激情在线| 国产精品爽爽ⅴa在线观看| 欧美成人69av| 国产九色精品成人porny| 亚洲国产精品一区二区三区 | 亚洲视频在线看| 欧美日韩国产小视频| 国产精品草草| 欧美va亚洲va香蕉在线| 国产精品青草久久久久福利99| 欧美xx69| 国产亚洲欧洲| 国产精品久久久久久久免费软件| 亚洲国产精品久久久久婷婷老年| 亚洲人在线视频| 国产精品―色哟哟| 亚洲日本成人网| 亚洲欧洲日产国产综合网| 久久精品99国产精品日本| 欧美一区二区| 国产精品三级视频| 日韩视频一区二区| 亚洲理论在线| 欧美激情一二区| 亚洲国产精品成人久久综合一区| 韩国在线视频一区| 久久aⅴ乱码一区二区三区| 欧美一级大片在线免费观看| 国产精品日韩精品| 亚洲影院免费| 欧美伊人久久大香线蕉综合69| 欧美日韩精品一区二区三区| 亚洲精品久久久久久久久久久| 老牛国产精品一区的观看方式| 亚洲一区二区伦理| 国语精品中文字幕| 亚洲综合电影一区二区三区| 亚洲综合99| 国产美女高潮久久白浆| 亚洲在线国产日韩欧美| 久久久精品网| 曰韩精品一区二区| 美日韩在线观看| 亚洲国产欧美久久| 一区电影在线观看| 国产精品多人| 午夜精品一区二区三区在线视| 久久都是精品| 亚洲黄色片网站| 欧美日韩免费高清一区色橹橹| 亚洲精品一二三区| 亚洲在线观看视频网站| 国产麻豆9l精品三级站| 久久久噜噜噜久噜久久| 另类亚洲自拍| 91久久国产自产拍夜夜嗨| 禁断一区二区三区在线| 午夜亚洲福利在线老司机| 欧美午夜精品久久久久久人妖| 日韩午夜电影av| 性高湖久久久久久久久| 韩国在线视频一区| 欧美久久视频| 午夜伦理片一区| 欧美成人综合| 亚洲欧美日韩一区二区三区在线| 国产区亚洲区欧美区| 欧美国产一区在线| 亚洲综合三区| 亚洲激情另类| 99re这里只有精品6| 亚洲国产成人久久综合一区| 亚洲国产精品一区二区第一页| 欧美精品在线观看一区二区| 性欧美超级视频| 亚洲人体1000| 久色成人在线| 欧美一区二区三区视频免费播放| 在线免费日韩片| 国产欧美日韩视频一区二区三区| 欧美激情一区二区三区在线视频| 亚洲女人天堂成人av在线| 亚洲欧洲一区二区天堂久久| 久久久久五月天| 亚洲女ⅴideoshd黑人| 亚洲国产免费看| 国产一区二区高清| 国产精品久久久久久久7电影| 麻豆精品在线视频| 久久成人精品无人区| 亚洲免费网址| 亚洲一区二区三区四区视频| 日韩午夜中文字幕| 亚洲国产一区二区三区高清|