锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美韩国一区,国内成+人亚洲+欧美+综合在线,欧美久久电影http://www.shnenglu.com/feixuwu/絀峰垯鐙杽鍏惰韓錛岃揪鍒欏吋嫻庡ぉ涓嬨?/description>zh-cnWed, 24 Sep 2025 07:08:04 GMTWed, 24 Sep 2025 07:08:04 GMT60璁板綍涓涓爤閿欒闂鐨勮В鍐?/title><link>http://www.shnenglu.com/feixuwu/archive/2013/12/02/204555.html</link><dc:creator>feixuwu</dc:creator><author>feixuwu</author><pubDate>Mon, 02 Dec 2013 12:51:00 GMT</pubDate><guid>http://www.shnenglu.com/feixuwu/archive/2013/12/02/204555.html</guid><wfw:comment>http://www.shnenglu.com/feixuwu/comments/204555.html</wfw:comment><comments>http://www.shnenglu.com/feixuwu/archive/2013/12/02/204555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/feixuwu/comments/commentRss/204555.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/feixuwu/services/trackbacks/204555.html</trackback:ping><description><![CDATA[<h1>闂  </h1>   涓婂懆寮濮嬶紝鎴戜滑涓涓凡緇忓湪綰胯繍琛屼簡蹇?騫寸殑娓告垙紿佺劧棰戠箒瀹曟満錛屽畷鏈哄墠鍒氬ソ涓婁簡涓涓祫鏂欑墖錛屾彁浜や簡澶ф壒閲忕殑浠g爜銆?br />姣旇緝楹葷儲鐨勬槸瀹曟満鐨刢ore鏂囦歡閲屾病鏈変換浣曟湁鏁圕allStack淇℃伅銆傚湪闅忓悗鐨勫嬈″畷鏈篶ore鏂囦歡閲屼篃閮芥壘涓嶅埌鏈夋晥鐨凜allStack淇℃伅錛屽畾浣嶉棶棰樺彉寰楁棤浠庡叆鎵嬨?br /><br /><h1>鍘熷洜<br /> <br /><p><span style="font-weight: normal; font-size: 12pt;">   鏍規嵁緇忛獙錛岃繖鏄竴涓吀鍨嬬殑鏍堢牬鍧忛棶棰樸備竴鏃︽爤鐮村潖浜嗗嚱鏁拌繑鍥炲煎悗錛屽爢鏍堝畬鍏ㄦ槸閿欎貢鐨勶紝寰椾笉鍒頒換浣曟湁鏁堜俊鎭?br />鏈寮濮嬫垜寤鴻欏圭洰緇勭殑鍚屼簨鏌ョ湅鏈榪戞彁浜ょ殑浠g爜錛岀湅鐪嬭兘鍚︽壘鍒扮嚎绱€備笉榪囩敱浜庤繎涓涓湀鎻愪氦鐨勪唬鐮佸疄鍦ㄥお澶氾紝澶ф搗鎹為拡浜嗕竴孌墊椂闂村悗錛?br />姣棤澶寸華銆?br />   鏍堣鐩栦竴鑸槸鍥犱負memcpy鎴栬呮槸寰幆璧嬪艱鍙ュ鑷寸殑錛屼竴鑸爤瑕嗙洊鐨勫眰嬈′笉浼氬お澶氾紝鎵浠ヤ粠搴曢儴寰涓婃壘錛屽簲璇ヨ兘鎵懼埌浜涙湁鏁堢殑綰跨儲銆?br />涓嶈繃錛岀敱浜庢湇鍔″櫒鍑芥暟緇忓父浼氭湁Package鐨勪復鏃跺彉閲忥紝瀵艱嚧鍑芥暟鏍堝緢澶э紝浠庝笅寰涓婃壘綰跨儲涔熷緢鍥伴毦錛屽緢澶氫技鏄岄潪鐨勫悎娉曞湴鍧寰堝鏄撳垎鏁g簿鍔涖?br /></span></p></h1><h1><font size="3"><span style="font-size: 24pt;">瑙e喅<br /><br /></span></font><p><font size="3"><span style="font-size: 12pt; font-weight: normal;">  鎸夌収涓婇潰鐨勫垎鏋愶紝浠庡簳閮ㄥ線涓婃壘鏄ぇ嫻鋒崬閽堬紝閭d箞浠庨《閮ㄥ線涓嬫壘濡備綍鍛紵<br />榪欓噷鍏堣鏄庝笅涓鑸嚱鏁板爢鏍堝撫鐨勫緩绔?鏈紭鍖栨儏鍐典笅鐨勭敤鎴峰嚱鏁?:<br />push rbp<br />mov rbp, rsp<br />浠庤繖閲屽彲浠ョ湅鍑猴紝鏈眰鍑芥暟鐨勮繑鍥炲兼槸瀛樺偍鍦?[rbp + 8]錛岃屼笂灞傚嚱鏁扮殑rbp鍦板潃鍒欏瓨鍌ㄥ湪 [rbp]銆?br />鎵浠ワ紝浠庝笅緗戜笂鎵劇殑鏃跺欙紝鍙互鏍規嵁rbp閫愭鎵懼埌涓婂眰鍑芥暟鍜屼笂灞傚嚱鏁扮殑鍫嗘爤甯с?br /><br />閭d箞濡備綍寰涓嬫壘鍛紝鍋囧鐭ラ亾浜嗕竴涓笂灞傚嚱鏁扮殑rbp錛屽浣曡幏鍙栦笅灞傚嚱鏁板憿錛?br />榪欓噷鏈変釜灝忕獚闂紝gdb7.X鐨勭増鏈湁涓涓猣ind鍔熻兘錛屽彲浠ュ湪鍐呭瓨鍖哄煙鎼滅儲鏁板鹼紝<br />浠庝笂寰涓嬫壘鐨勬椂鍊欙紝鍙互鍦ㄥ爢鏍堟煡鎵炬湰灞?rbp鐨勫瓨鏀懼湴鍧錛屼粠鑰岀‘瀹氫笅灞傚嚱鏁皉bp鐨勫瓨鏀懼湴鍧銆?br />涓句釜渚嬪瓙:<br /><br /></span></font></p><div><span style="font-weight: normal; font-size: 12pt;">#0  0x00007ffff77d7830 in nanosleep () from /lib/x86_64-linux-gnu/libc.so.6</span></div><div><span style="font-weight: normal; font-size: 12pt;">#1  0x00007ffff77d76ec in sleep () from /lib/x86_64-linux-gnu/libc.so.6</span></div><div><span style="font-weight: normal; font-size: 12pt;">#2  0x000000000040070a in test1 () at main.cpp:9</span></div><div><span style="font-weight: normal; font-size: 12pt;">#3  0x0000000000400715 in test () at main.cpp:14</span></div><div><span style="font-weight: normal; font-size: 12pt;">#4  0x000000000040072b in main (argc=1, argv=0x7fffffffe648) at main.cpp:19<br /><br /></span><span style="font-weight: normal; font-size: 12pt;">榪欐槸涓涓吀鍨嬬殑CallStack,璁╂垜浠厛鎵懼埌</span><span style="font-size: 16px; font-weight: normal;">0x000000000040072b鐨勫爢鏍堜俊鎭惂銆?br />鍏?info r 鏌ョ湅褰撳墠鐨勫瘎瀛樺櫒淇℃伅:<br /></span><div><span style="font-weight: normal; font-size: 12pt;">寰楀埌 rsp涓?/span><span style="font-size: 14px;">0x7fffffffe358</span></div><span style="font-size: 16px; font-weight: normal;"><br /></span><div><span style="font-weight: normal; font-size: 12pt;"></span></div><div><span style="font-weight: normal; font-size: 12pt;">find $rsp, +0x300, 0x000000000040072b</span></div><div><span style="font-weight: normal; font-size: 12pt;">0x7fffffffe548</span></div><div><span style="font-weight: normal; font-size: 12pt;">1 pattern found.<br /><br />鍙湁涓涓湴鍧錛岄偅涔堝瓨鏀緍bp鐨勫湴鍧灝辨槸</span><span style="font-size: 16px; font-weight: normal;">0x7fffffffe540浜嗭紝<br /></span></div><div><span style="font-weight: normal; font-size: 12pt;">緇х畫 find $rsp, +0x300, </span><span style="font-size: 16px; font-weight: normal;">0x7fffffffe540</span><span style="font-weight: normal; font-size: 12pt;"><br /></span><div><span style="font-weight: normal; font-size: 12pt;">0x7fffffffe530</span></div><div><span style="font-weight: normal; font-size: 12pt;">1 pattern found.<br />楠岃瘉涓嬫槸鍚︽紜細<br />x/10xg </span><span style="font-size: 16px; font-weight: normal;">0x7fffffffe530<br /><br /></span><div><span style="font-weight: normal; font-size: 12pt;">0x7fffffffe530: 0x00007fffffffe540      </span><span style="font-size: 12pt;">0x0000000000400715</span></div><div><span style="font-weight: normal; font-size: 12pt;">0x7fffffffe540: 0x00007fffffffe560      0x000000000040072b</span></div><div><span style="font-weight: normal; font-size: 12pt;">0x7fffffffe550: 0x00007fffffffe648      0x0000000100000000<br /><br />鐪嬪埌浜嗗惂錛屽氨鏄繖鏍鋒壘鍒頒簡涓嬩竴綰х殑鍑芥暟銆?br />鐪熷疄鐜涓線寰娌¤繖涔堢畝鍗曪紝鏈夋椂鍊欎細鎵懼埌濂藉嚑涓湴鍧錛岃繖涓椂鍊欓渶瑕佽嚜宸遍愪釜鍘諱吉瀛樼湡浜嗐?br /></span></div></div></div></div></h1><p> </p><img src ="http://www.shnenglu.com/feixuwu/aggbug/204555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/feixuwu/" target="_blank">feixuwu</a> 2013-12-02 20:51 <a href="http://www.shnenglu.com/feixuwu/archive/2013/12/02/204555.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Bug鎬葷粨涓(鍦烘櫙綆$悊闂)http://www.shnenglu.com/feixuwu/archive/2012/07/15/183613.htmlfeixuwufeixuwuSun, 15 Jul 2012 14:13:00 GMThttp://www.shnenglu.com/feixuwu/archive/2012/07/15/183613.htmlhttp://www.shnenglu.com/feixuwu/comments/183613.htmlhttp://www.shnenglu.com/feixuwu/archive/2012/07/15/183613.html#Feedback0http://www.shnenglu.com/feixuwu/comments/commentRss/183613.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/183613.html

鍦烘櫙綆$悊

   涓轟簡璇存槑Bug浜х敓鐨勫師鍥狅紝鍏堟弿榪頒笅鍦烘櫙綆$悊鐨勫疄鐜版柟寮忓惂銆?/span>

  1銆佹父鎴忓満鏅槸娓告垙鍦板浘鐨勪竴涓疄渚?鍋囪鍦板浘鏄痗lass)錛屼竴涓湴鍥懼彲浠ュ垱寤哄涓満鏅紝鍦烘櫙涓昏璐熻矗綆$悊鐜╁鐨勭Щ鍔ㄣ佸箍鎾瓑澶勭悊銆?/span>
  2銆佸満鏅殑騫挎挱鏄噰鍙栫粡鍏哥殑涔濆鏍兼柟寮忔潵瀹炵幇鐨勶紝姣忎竴涓牸瀛愮殑鎴戜滑瀹氫箟涓篈rea瀵硅薄,涓涓満鏅殑鏍煎瓙緇勬垚鍏跺疄鏄竴涓簩緇存暟緇勩?/span>
  3銆佺帺瀹惰繘鍏ュ満鏅殑鏃跺欙紝鏍規嵁鍧愭爣鍙互鐭ラ亾瑕佽繘鍏ュ摢涓牸瀛愶紝姣忎釜鏍煎瓙鍐呬細淇濈暀涓涓狧ead鎸囬拡錛屾爣璁版渶鏂拌繘鍏ョ殑鐜╁瀵硅薄銆傜帺瀹跺璞′笂鏈?涓寚閽堬紝鏍囪鐜╁鎵鍦ㄦ牸瀛愮殑鍓嶄竴涓拰鍚庝竴涓璞°傚彲浠ラ氳繃鏍煎瓙鍐呯殑Head鎸囬拡渚垮埄Area鍐呯殑鎵鏈夌帺瀹跺璞°?/span>
  4銆佺帺瀹剁Щ鍔ㄥ垏鎹㈡牸瀛愮殑鏃跺欙紝鍏堜粠鍘熸潵鐨勬牸瀛愬唴Leave錛岃繖浼氳皟鐢ㄥ師鏉rea瀵硅薄鐨凩eave鍑芥暟銆傚啀榪涘叆鏂扮殑鏍煎瓙錛岃皟鐢ˋrea鐨凟nter鍑芥暟銆傚緢鏄庢樉錛孡eave鍑芥暟灝辨槸涓涓摼琛ㄥ垹闄ゆ搷浣滐紝濡傛灉鐜╁鏄疕ead錛屽垯璁劇疆鏂扮殑Head銆?/span>
   Enter鎿嶄綔灝辨槸灝嗘柊榪涘叆鐨勭帺瀹墮摼鎺ュ埌鍘熼槦鍒楅噷錛屾柊榪涘叆鐨勭帺瀹朵細琚緗負Head銆?/span>

闂琛ㄧ幇  

   鏍規嵁涓婇潰鐨勬弿榪幫紝濡傛灉涓鍒囨寜鐓ф甯哥▼搴忥紝榪欎釜鏂規榪愯漿鏄病闂鐨勩傛渶鍒濅笂綰跨殑鏃跺欙紝涔熸病鏈夊嚭鐜伴棶棰橈紝浣嗘槸鍦ㄥ嚭浜嗕竴涓祫鏂欑墖涔嬪悗錛屾湇鍔″櫒鍩烘湰涓婃瘡闅斿崐灝忔椂宸﹀彸灝變細鍙戠幇鏈夋寰幆鎴栬呭畷鏈洪棶棰樸?/span>

姝誨驚鐜殑琛ㄧ幇寰堟槑鏄撅紝灝辨槸鍦ㄩ亶鍘嗗満鏅帺瀹剁殑鏃跺欙紝鍑虹幇姝誨驚鐜傚畷鏈哄垯鏇村姞澶嶆潅浜涳紝姣忔瀹曟満浣嶇疆涓嶅悓錛屾葷殑鏉ヨ澶ф鏈?-4涓湴鏂癸紝姣忎釜鍦版柟鍗曠湅閮戒笉鍚堝父鐞嗐?/span>
鐩存帴鍒嗘瀽涓婇潰鐨勮〃鐜幫紝閮芥壘涓嶅埌鐪熸鐨勭殑鍘熷洜錛屽彧濂芥墿澶ф悳绱㈣寖鍥翠簡銆?/span>
姣旇緝鍊掗湁鐨勬槸閭d釜璧勬枡鐗囩殑涓昏緋葷粺閮芥槸鎴戝紑鍙戠殑錛屾墍浠ヨ嚜鐒跺珜鐤戞渶澶э紝鐒跺悗澶у闆嗕腑綺懼姏鏉ュ垎鏋愭垜鐨勪唬鐮侊紝鐢變簬姣忎釜浜洪鏍奸兘涓嶅悓錛屾墍浠ュぇ瀹剁湅鐨勪笉澶槑鐧界殑鍦版柟閮戒細鏉ラ棶鎴戯紝鎵浠ラ偅涓櫄涓婂熀鏈氨鍦ㄨВ絳旇璁$枒闂簡銆?/span>
琚疆浜嗗ぇ鍗婁釜鏅氫笂錛岀煡閬撳噷鏅?鐐癸紝澶у涔熸病鍒嗘瀽鍑洪棶棰橈紝鍙ソ鍏堝洖鍘葷潯瑙変簡銆傜粨鏋滄棭涓?鐐癸紝嫻嬭瘯緇欐垜鎵撶數璇濅簡錛屾病鍔炴硶鍙ソ璺戣繃鍘諱簡錛屼竴鍒板叕鍙革紝鍙戠幇鍥翠簡涓鍫嗚佸ぇ錛岃佸ぇ浠緢涓ヨ們錛氳繖涓棶棰樺緢涓ラ噸錛屽繀欏誨敖蹇В鍐熾?/span>
娌″姙娉曪紝鍙ソ緇х畫涓婇樀浜嗭紝鎴樻枟鍒頒笅鍗?鐐癸紝紿佺劧鐏靛厜涓闂紝鎯沖埌浜嗗師鍥狅紝褰撴椂鎰熻鐪熺殑蹇冨姏浜ょ榿浜嗭紝鏇村姞鎰熸叏鐨勬槸鍏跺疄榪欎釜闂鐪熷拰鎴戞病鍟ュ叧緋匯傘傘?/span>


鍘熷洜

   鐪熸瀵艱嚧榪欐浜嬫晠鐨勫叾瀹炴槸涓涓皬鎿嶄綔:鐜╁閲嶇櫥褰?鎵嬫満鐜╁鏂綉鐨勬椂鍊欙紝鏈嶅姟鍣ㄤ細淇濆瓨涓孌墊椂闂村湪綰跨姸鎬?鐨勬椂鍊欙紝鏈夌殑鏃跺欑敱浜庡叾浠栧師鍥狅紝浼氬崱鍦ㄤ笉鑳藉湴鍥劇殑鐗╃悊灞?涓嶈兘琛屽姩鐨勭偣)錛岀帺瀹跺畬鍏ㄤ笉鑳界Щ鍔ㄣ備負浜嗚В鍐寵繖涓棶棰橈紝鏈変釜鍚屼簨鍦ㄧ帺瀹墮噸鐧誨綍鐨勬椂鍊欙紝鐩存帴璁劇疆浜嗙帺瀹剁殑鍧愭爣鍒頒竴涓彲縐誨姩鐨勭偣銆?/span>
榪欎釜鐪嬩技鏃犲叧绱ц鐨勬搷浣滐紝鐪熸瀵艱嚧浜嗘湇鍔″櫒1澶╁鏃墮棿鍐呬笉鍋滅殑瀹曟満銆備笅闈㈡潵璁板綍涓嬪垎鏋愯繃紼嬪惂銆?/span>
1銆佺帺瀹跺湪閲嶇櫥褰曞墠錛屽叾瀹炴槸鍦ㄥ満鏅腑鐨勶紝涔熷氨鏄湪涓涓叿浣撶殑Area閲屻?/span>
2銆佺敱浜庣帺瀹朵笂綰垮悗錛岀洿鎺ヨ緗簡鍧愭爣錛岃屾垜浠悗緇殑璁$畻鏄氳繃鍧愭爣鏉ヨ幏鍙朅rea瀵硅薄鐨勶紝鍏跺疄榪欓噷灝卞嚭鐜伴棶棰樹簡錛岀帺瀹跺叾瀹炴槸鍦ˋ鏍煎瓙鐨勯摼琛ㄤ笂錛屼絾鏄牴鎹潗鏍囪綆楄幏寰楃殑鏍煎瓙鏄疊銆?/span>
3銆佺帺瀹剁Щ鍔ㄥ悗錛屽垏鎹㈡牸瀛愶紝闇瑕佷粠鍘熸牸瀛怢eave,鐒跺悗榪涘叆鏂扮殑鏍煎瓙錛屼絾鏄熀浜庝笂闈㈢殑鍘熷洜錛屾墍浠ュ叾瀹炴秹鍙婂埌鐨勬湁3涓牸瀛愶紝(1)銆佺帺瀹剁湡瀹炴墍鍦ㄧ殑鏍煎瓙閾捐〃(A)銆?2)銆侀氳繃鍧愭爣璁$畻鎵寰楃殑鏍煎瓙(B)錛岃繖涓牸瀛愬璞′笂浼氳皟鐢↙eave鎿嶄綔銆?/span>
  (3)瑕佽繘鍏ョ殑鏂版牸瀛?C)銆?/span>
4銆佺敱浜庣帺瀹跺叾瀹炲湪鏍煎瓙A,浣嗘槸鎴戜滑璋冪敤鐨勬槸B.Leave(player);C.Enter(player)錛屼粠榪欓噷鐪嬶紝鑲畾鏄湁闂鐨勶紝浣嗘槸緇嗙湅鍒欎笉鐒訛紝鐢變簬鐜╁瀵硅薄鏄褰曚簡鍓嶄竴涓拰鍚庝竴涓璞★紝鎵浠.Leave鏈韓騫朵笉浼氱牬鍧廈鐨勯摼琛ㄧ粨鏋勶紝C.Enter鐪嬩笂鍘諱篃娌¢棶棰橈紝閭d箞錛岄棶棰樺湪鍝噷錛?/span>
5銆佺湡姝g殑鍘熷洜鍏跺疄鏄牸瀛怉瀵硅薄琚牬鍧忎簡錛孊.Leave(player)涓婃槸灝嗙帺瀹朵粠瀹冭嚜宸辯殑閾捐〃涓婂垹闄や簡錛岄摼琛ㄦ湰韜槸娌℃湁琚牬鍧忎簡錛屽叧閿殑鍘熷洜鏄鏋滅帺瀹跺湪鏍煎瓙A鏄疕ead,閭d箞瀹為檯涓婂湪鐜╁琚垹闄ゅ悗錛孒ead搴旇琚敼鍙橈紝浣嗘槸鐢變簬鎿嶄綔鐨勬槸鏍煎瓙B錛屾墍浠ワ紝A鍏跺疄琚牬鍧忎簡錛屽緢濂囧錛岃繖涓璞℃病鏈夋搷浣滐紝鍗磋鐮村潖浜嗐傚悗闈㈢殑闂灝辯畝鍗曚簡錛屽鏋滅帺瀹惰繘鍏ョ殑C灝辨槸A,鍒欎細鏄竴涓緢鏄庢樉鐨勬寰幆錛屽鏋滅帺瀹惰繘鍏ョ殑C鏄竴涓柊鐨勬牸瀛愶紝鍒欐牸瀛怉鐨勫璞¢兘涓嶈兘琚劅鐭ヤ簡銆?/span>

 

 

 



feixuwu 2012-07-15 22:13 鍙戣〃璇勮
]]>
欏圭洰寮鍙戜腑鐨勪竴浜涙濊?/title><link>http://www.shnenglu.com/feixuwu/archive/2012/02/16/165779.html</link><dc:creator>feixuwu</dc:creator><author>feixuwu</author><pubDate>Thu, 16 Feb 2012 13:00:00 GMT</pubDate><guid>http://www.shnenglu.com/feixuwu/archive/2012/02/16/165779.html</guid><wfw:comment>http://www.shnenglu.com/feixuwu/comments/165779.html</wfw:comment><comments>http://www.shnenglu.com/feixuwu/archive/2012/02/16/165779.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/feixuwu/comments/commentRss/165779.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/feixuwu/services/trackbacks/165779.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt">      </span><span style="font-size: 10pt">  2011宸茬粡璋㈠箷浜嗭紝鐜板湪閮芥祦琛屾葷粨錛岃鏄鎴戞葷粨2011錛屽彲浠ョ敤2涓瘝鏉ユ鎷紝杈涜嫤銆佸埡嬋銆?/span><br /><span style="font-size: 10pt">杈涜嫤鏄洜涓?011鍩烘湰涓婃槸鍔犱簡涓騫寸彮錛屼粠榪囧畬騫村紑濮嬶紝鍒?012騫磋繃騫村墠鏈鍚庝竴鍛紝榪欎竴騫存潵錛屾槸鎴戞劅瑙夋渶杈涜嫤鐨勪竴騫達紝濂藉湪鏈緇?/span><br /><span style="font-size: 10pt">欏圭洰綆楁槸鎵撲簡涓炕韜粭錛屽績閲屾葷畻鏈変簡浜涙叞钘夈?br /><br /></span>       <span style="font-size: 10pt">2011騫存父鎴忕粡鍘嗕粠鎶鏈皝嫻嬨佸唴嫻嬨佸叕嫻嬪埌鏁存敼銆侀噸鏂板唴嫻嬪叕嫻嬶紝涓璺蛋鏉ワ紝閬囧埌鏃犳暟紼濂囧彜鎬殑Bug錛?/span><br /><span style="font-size: 10pt">鏈夋椂鍊欏帇鍔涘ぇ鐨勬椂鍊欙紝鏅氫笂閮界潯涓嶇潃錛岃剳瀛愰噷鍥炴兂鐫鐜板満鐨勪竴涓濅笣铔涗笣椹抗錛屽笇鏈涜兘鎵懼埌bug鐨勫師鍥狅紝緇忓巻榪囨棤鏁版緇濇湜鍒伴噸鐢熺殑鍠滄偊錛屼篃鏈夎鐚滃繉涓嶄俊浠葷殑鐥涜嫤錛屾椿鑴辮劚灝辨槸涓閮ㄩ儴渚︽帰鍓ф儏銆?/span><br /><span style="font-size: 10pt">  娌℃湁浠庝簨榪囨父鎴忓紑鍙戞垨鑰呮父鎴忔病涓婄嚎鐨勫悓瀛﹀緢闅劇悊瑙?bug鏈夎繖涔堥毦鎵懼悧錛熺殑紜紝濡傛灉鏄畝鍗曠殑絀烘寚閽堝畷鏈猴紝褰撶劧鏄ソ鎵劇殑錛岀敤鎴戜滑鐨勮瘽錛岃繖綾婚棶棰樻槸涓偦瀛愰兘鑳借В鍐?鍏跺疄涓嶇劧錛屽緢澶氭椂鍊欑洿鎺ュ師鍥犳槸絀烘寚閽堬紝</span><br /><span style="font-size: 10pt">鐪熸鐨勫師鍥犻殣钘忓緢娣?錛屼絾鏄洿澶氱殑鏄殣钘忓緢娣辯殑闂錛岄渶瑕佸弽澶嶇殑鍒嗘瀽鐜板満錛屽亣璁懼墽鎯呮墠鑳藉緱鍒扮伒鎰燂紝鐒跺悗鎺ㄦ紨錛屾墠鍙兘寰楀埌緇撴灉錛屽綋鐒訛紝榪欎釜鍜屾父鎴忛昏緫鐨勫鏉傚害鏄垎涓嶅紑鐨勩?/span><br /><span style="font-size: 10pt">  鍏蜂綋鐨刡ug緇嗚妭涓嶄究鍦ㄦ鍒嗘瀽錛屼絾鏄ぇ閮ㄥ垎鐨勯棶棰橈紝鍏跺疄閮芥槸鍥犱負涓嶆甯哥殑璁捐寮曡搗鐨勶紝鎵浠ュ叾瀹炴垜涓鐩村湪鎬濊冿紝鍦ㄨ蔣浠跺紑鍙戦鍩燂紝鍏跺疄涔熷瓨鍦ㄧ潃"閬?,璇撮氫織鐐瑰彨瀹㈣瑙勫緥錛屼笉鎸夌収閬撹浜嬶紝榪熸棭鏄鍙楀埌鎯╃綒鐨勩?/span><br /><span style="font-size: 10pt">浣嗘槸鍦ㄦ父鎴忓悗鍙板紑鍙戜腑錛屽緢澶氭椂鍊欏瓨鍦ㄤ笉鍚屾妧鏈柟妗堢殑鐭涚浘錛岄毦浠ヨ浜哄彇鑸嶏紝榪欎簺鐭涚浘閮芥槸鐪熷疄鍦ㄥ緢澶氶」鐩瓨鍦ㄧ殑銆?/span><br /><br /></p> <h2></h2> <h2><span style="font-size: 24pt">鍔ㄦ佸唴瀛樿繕鏄潤鎬佸唴瀛?/span></h2> <p><font size="3"><span style="font-weight: normal; font-size: 12pt">     </span><span style="font-weight: normal; font-size: 10pt"> 寰堝寮鍙戣呯敱浜庢媴蹇冨唴瀛樻硠闇詫紝鍦ㄩ」鐩腑紱佹浣跨敤鍔ㄦ佸唴瀛?褰撶劧榪欏疄闄呬笂鍑犱箮鏄仛涓嶅埌鐨?錛屼嬌鐢ㄥ璞℃睜鏉ラ伩鍏嶅姩鎬佸唴瀛橈紝灝辨槸棰勫厛鍒涘緩棰勮鏈澶ф暟閲忕殑瀵硅薄錛屽悗緇敵璇峰拰褰掕繕鐨勬椂鍊欙紝閮芥槸鎿嶄綔瀵硅薄姹狅紝<br /></span><span style="font-weight: normal; font-size: 10pt">閬垮厤鍔ㄦ乶ew鍜宒elete銆傝繖鏍風殑欏圭洰榪樹笉灝戯紝鎴戣榪囩殑灝卞ソ鍑犱釜銆傚璞℃睜鐨勫ソ澶勬槸鏄捐屾槗瑙佺殑錛屽熀鏈笂鍙互閬垮厤鍐呭瓨娉勯湶銆備絾鏄疄闄呬笂錛岃繖縐嶆柟寮忔槸鎶婂弻鍒冨墤錛屼釜浜鴻寰楀湪娓告垙欏圭洰涓紝榪欑鏂瑰紡寮婂ぇ浜庡埄銆?br /></span><span style="font-weight: normal; font-size: 10pt">涓昏寮婄鏈変笅闈㈠嚑鐐癸細<br /></span><span style="font-weight: normal; font-size: 10pt">1銆佸紑鍙戜笉鏂逛究錛屽鑷撮渶瑕佹坊鍔犲緢澶氱殑瀵硅薄姹犵鐞嗙被錛屽嵆浣挎湁妯℃澘甯繖錛屼篃鏄潪甯哥箒鐞愮殑銆傚疄闄呭紑鍙戜腑錛屽嚑涔庝笉鍙兘瀵硅繖浜涘皬瀵硅薄綾婚兘鎼炰竴涓璞℃睜綆$悊綾匯?br /><br /></span><span style="font-weight: normal; font-size: 10pt">2銆佺敱浜庨噰鐢ㄩ鍏堢敓鎴愬璞★紝涓鑸細棰勪及涓涓璞″彲鑳藉瓨鍦ㄧ殑鏈澶ф暟閲忥紝鐒跺悗鎸夌収鏈澶ф暟閲忔潵鍒涘緩錛屾氮璐瑰唴瀛樸?br /></span><span style="font-weight: normal; font-size: 10pt">  鐨勭‘錛屼綘娌℃湁鍐呭瓨娉勯湶錛屼絾鏄綘鍚姩鐨勬椂鍊欏氨闇瑕佸ソ鍑犱釜G鐨勫唴瀛橈紝榪欎釜鏄唴瀛樻氮璐癸紝濂藉湪鐜板湪server寮鍙戝熀鏈兘鏄?4浣嶏紝娌℃湁鍦板潃絀洪棿鐨勫洶鎵頒簡錛屼絾鏄紝鍦ㄥぇ閮ㄥ垎鎯呭喌涓嬫氮璐瑰ソ鍑犱釜G鐨勫唴瀛橈紝<br /></span><span style="font-weight: normal; font-size: 10pt">鍏夋兂鎯抽兘鏈夌偣蹇冪柤銆?br /><br /></span><span style="font-weight: normal; font-size: 10pt">3銆佸紩鍏ヤ簡鏂扮殑椋庨櫓錛岀敱浜庨噰鐢ㄥ璞℃睜錛岀敵璇鋒柊瀵硅薄鐨勬椂鍊欙紝鍙槸綆鍗曠殑pop涓涓┖闂插璞″氨鍙互浜嗭紝寰堝鏄撴紡鎺夊璞″垵濮嬪寲鐨勫伐浣滐紝鍦ㄥ洖鏀跺璞$殑鏃跺欙紝澶ч儴鍒嗗紑鍙戣呬篃寰堝鏄撴紡鎺夋竻鐞嗗伐浣滐紝鎴栬呭垵濮嬪寲鍜?br /></span><span style="font-weight: normal; font-size: 10pt">娓呯悊宸ヤ綔榪囦簬綆鍗曪紝榪欐牱瀹規槗瀵艱嚧鏂板璞¤鍘嗗彶鎿嶄綔褰卞搷銆傛浘緇忛亣鍒拌繃涓涓柊FB鎵鏈変紶閫佺偣閮芥墦涓嶅紑鐨勯棶棰橈紝灝辨槸鍥犱負鍘嗗彶瀵硅薄鍥炴敹鏃舵暟鎹病娓呯悊瀵艱嚧鐨勩?br /></span><span style="font-weight: normal; font-size: 12pt"><br /></span><span style="font-weight: normal; font-size: 10pt">    鍥炲ご鏉ョ湅瀵硅薄姹犵殑浼樼偣錛屽緢澶氬紑鍙戣呭潥鎸佹槸涓轟簡瑙e喅鍐呭瓨紕庣墖鍜屽唴瀛樻硠闇層傚厛璇村唴瀛樼鐗囷紝鏆備笖涓嶈鍐呭瓨紕庣墖鐪熺殑鏄惁鏈夎繖涔堜弗閲嶏紝閫涓姝ワ紝鍏跺疄鍐呭瓨紕庣墖宸茬粡鏈夊緢澶氱殑鎴愮啛瑙e喅鏂規浜嗭紝鑷繁閲嶈澆smallObject榪樻槸<br /></span><span style="font-weight: normal; font-size: 10pt">閲囩敤鏍囧噯鐨則cmalloc瑙e喅錛岄兘鏄潪甯歌交鏉劇殑銆傝嚦浜庡唴瀛樻硠闇詫紝涓漢瑙夊緱榪欎釜闂鍏跺疄鏄緢濂芥煡鐨勶紝涔熸槸c++紼嬪簭鍛樼殑鍩烘湰瑕佹眰銆?/span><span style="font-weight: normal; font-size: 14pt"><br /><br /></span></font></p> <h2><span style="font-size: 24pt">鍒嗘ā鍧楅拡瀵規帴鍙g紪紼嬭繕鏄竴閿呯播</span></h2> <p><span style="font-weight: normal; font-size: 10pt">     榪欎釜闂鍗曠嫭鎻愬嚭鏉ワ紝鍑犱箮鎵鏈変漢閮戒細璇達紝褰撶劧鏄垎妯″潡閽堝鎺ュ彛寮鍙戜簡銆傚拰澶╀笅鎵鏈夌殑浜嬫儏涓鏍鳳紝鐭ユ槗琛岄毦銆傜敱浜庢父鎴忛昏緫欏圭洰褰卞搷鐨勫湴鏂歸潪甯稿錛屾瘮濡傛浜$殑鏃跺欙紝鏃㈤渶瑕佸垽鏂浜℃帀钀斤紝鍙堥渶瑕佸鐞嗕換鍔$姸鎬侊紝</span><br /><span style="font-weight: normal; font-size: 10pt">濡傛灉鍦ㄦ垬鍦哄拰绔炴妧鍦轟腑錛岃繕瑕佸垽鏂熀鏁板拰寰楀垎絳夌瓑錛岃繖灝卞鑷村緢澶氬紑鍙戣呬笉鍋囨濈儲鐨勬妸鎵鏈夌殑涓滆タ閮芥弶鍦ㄤ竴璧鳳紝浣犱腑鏈夋垜錛屾垜涓湁浣狅紝鎴戞敼浣犵殑浠g爜浣犳敼鎴戠殑銆?/span><br /><span style="font-weight: normal; font-size: 10pt">涓涓渶綆鍗曠殑渚嬪瓙錛屾垜鍦ㄩ」鐩腑寮鍙戞帀钀藉姛鑳斤紝褰撴妸鐗╁搧娣誨姞鍒扮帺瀹惰儗鍖呭悗錛屽彂鐜板鎴風娌℃湁鏇存柊鑳屽寘錛屼竴鏌ワ紝灞呯劧榪橀渶瑕佹帀钀界殑寮鍙戣呰嚜宸辨瀯閫犳暟鎹寘鍚屾瀹㈡埛绔紝鍏跺疄浣滀負鍏朵粬妯″潡錛屾牴鏈笉鍏沖績鑳屽寘鏁版嵁鍚屾鐨勭粏鑺傘?/span><br /><span style="font-weight: normal; font-size: 10pt">榪欎釜鍏跺疄鍦ㄧ幇瀹炵敓媧諱腑寰堝父瑙侊紝鎴戝鎵樿儗鍖呮ā鍧楁坊鍔犱竴涓墿鍝侊紝鍏蜂綋鐨勭粏鑺傛槸琚敱琚鎵樹漢鏉ヨ礋璐g殑銆傚皢榪囧鐨勭粏鑺備氦緇欏叾浠栨ā鍧楀鐞嗭紝浼氬鑷村鏉傚害澧炲姞錛屽鏄撳嚭鐜伴棶棰橈紝瀵瑰叾浠栦漢鏉ヨ錛屼篃鏄竴涓簿鍔涙氮璐癸紝濡傛灉鏄竴涓鏉?/span><br /><span style="font-weight: normal; font-size: 10pt">妯″潡錛屼綘浼氬彂鐜伴渶瑕佷簡瑙eお澶氱殑緇嗚妭錛屼慨鏀瑰お澶氳嚜宸變笉鐔熸倝鐨勪唬鐮侊紝榪涜屽鑷撮闄┿傝繕鏈変竴縐嶈鐐癸紝璁や負涓閿呯播鐨勫紑鍙戞柟寮忔湁鍔╀簬浜嗚В娓告垙鐨勫悇涓笟鍔℃ā鍧楋紝瀵硅繖縐嶈鐐癸紝鎴戞槸涓嶄互涓虹劧鐨勶紝姣忓ぉ闄峰叆鍒扮箒鐞愮殑緇嗚妭錛岀湡鐨勫鐔熸倝涓氬姟鏈夊ソ澶勫悧錛熸垨璁擱棽涓嬫潵鐜╃帺娓告垙鏇存湁甯姪錛岃屼笖錛岃繖涔堜貢鐨勪唬鐮侊紝鐪嬭搗鏉ヤ篃鏄潪甯哥瘡鐨勩傚垎妯″潡寮鍙戯紝鍏蜂綋鐨勫姙娉曪紝娓告垙緙栫▼綺劇補5涓婃湁綃囨枃绔犲啓寰楀緢濂斤紝榪欓噷涓嶆墿灞曚簡銆?/span><br /><br /><span style="font-size: 24pt">鐪熺殑闇瑕佺鐢⊿TL鍚?/span><br /><br /><span style="font-weight: normal; font-size: 10pt">  涓嶆涓嬈″湪鍜屽叾浠栭」鐩氦嫻佺殑璧勬枡閲岀湅鍒板鏂瑰緢濞佷弗鐨勫縐板湪欏圭洰閲岀姝嬌鐢⊿TL銆傝瀹炶瘽錛屾垜榪樼湡娌¤寰桽TL鏈変粈涔堜笉濂姐傝榪囧お澶氳繖綾婚」鐩嚜宸遍噸澶嶅疄鐜頒竴涓釜韞╄剼鐨勬帓搴忕畻娉曘佸鍣ㄧ瓑絳夈?br /></span><span style="font-weight: normal; font-size: 10pt">澶ч儴鍒嗕漢涓鑸兘浼氭牴鎹粡楠岄夋嫨浣跨敤鑷繁鐔熸倝鐨勬妧鏈紝榪欎釜鏃犲彲鍘氶潪錛屼絾鏄儚榪欐牱鏄庣潃紱佹浣跨敤STL錛岀湡涓嶇煡閬撳浣曡兘鐞嗙洿姘斿.銆傚叾瀹炲ぇ閮ㄥ垎涓嶇敤STL鐨勭悊鐢憋紝鍩烘湰涓婇兘鏄笉鐔熸倝錛屽畬鍏ㄦ病鏈夎凍澶熺殑鐞嗙敱紱佹浣跨敤銆?/span><span style="font-weight: normal; font-size: 12pt"><br /><br /></span><span style="font-size: 24pt">娓告垙寮鍙戞棤鎶鏈惈閲忥紵<br /></span> <br /><span style="font-weight: normal; font-size: 12pt">  </span><span style="font-weight: normal; font-size: 10pt">  鏇劇粡澶氭鍚埌琛屼笟鍐呯殑鍏勫紵鏈夋鎰熸叏錛岀‘瀹烇紝娓告垙閫昏緫澶嶆潅搴﹂潪甯擱珮錛屾灦鏋勪笂澶ч儴鍒嗛兘鏄被浼肩殑銆備絾鏄繖騫朵笉璇存槑娓告垙鍚庡彴寮鍙戝鏉傚害涓嶉珮錛屽浣曞皢娓告垙寮鍙戦昏緫澶嶆潅鍓ョ寮鏉ワ紝鍋氬埌紼沖畾楂樻晥寮鍙戯紝鍏跺疄榪樻槸鏈夊緢澶?br /></span><span style="font-weight: normal; font-size: 10pt">涓滆タ鍙互鎺㈣鐨勶紝鐪嬬湅閭d簺欏圭洰錛屽ぇ閮ㄥ垎閮芥槸涓閿呯播錛岄渶瑕佷粈涔堝姛鑳藉氨铔共錛屽姞涓婂幓錛岃繖鏍風‘瀹炴鏃犳妧鏈惈閲忥紝閮芥槸铔共銆傛墍浠ワ紝涓浠朵簨鎯呮槸鍚︽湁鎶鏈惈閲忥紝涓嶅厜鏄湅浜嬫儏鏈韓錛岃繕瑕佺湅鎬庝箞騫詫紝铔共鍜岃嫤騫詫紝閭f槸鏈娌℃湁鎶鏈?br /></span><span style="font-weight: normal; font-size: 10pt">鍚噺鐨勬柟寮忎簡錛岀▼搴忓憳榪樻槸瑕佹湁寮虹儓鐨?#8220;鍋鋒噿”鎰忚瘑銆?/span><br /><br /></p> <p> </p><img src ="http://www.shnenglu.com/feixuwu/aggbug/165779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/feixuwu/" target="_blank">feixuwu</a> 2012-02-16 21:00 <a href="http://www.shnenglu.com/feixuwu/archive/2012/02/16/165779.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>linux涓婸ageHeaphttp://www.shnenglu.com/feixuwu/archive/2011/05/14/146395.htmlfeixuwufeixuwuSat, 14 May 2011 13:16:00 GMThttp://www.shnenglu.com/feixuwu/archive/2011/05/14/146395.htmlhttp://www.shnenglu.com/feixuwu/comments/146395.htmlhttp://www.shnenglu.com/feixuwu/archive/2011/05/14/146395.html#Feedback1http://www.shnenglu.com/feixuwu/comments/commentRss/146395.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/146395.html 闂   鏈榪戞父鎴忓紑濮嬫妧鏈皝嫻嬩簡錛屼笉榪囧垰鍒氫笂綰?涓皬鏃訛紝Server灝辨寕浜嗭紝鎸傚湪妗嗘灦浠g爜閲岋紝涓涓笉鍙兘鎸傜殑鍦版柟銆?br />浠嶤allStack鐪嬶紝鏄湪鑾峰彇鏁版嵁鏃跺彂閫佽姹傚寘鐨勬椂鍊欐寕鐨勶紝鐢變簬妗嗘灦閮ㄥ垎鏄叾浠栭儴闂ㄧ殑鍚屼簨寮鍙戠殑錛屾墍浠ユ煡闂鐨勬椂鍊欏氨鎷変笂浠栦滑浜嗭紝
澶у鎶樿吘浜?澶╋紝娌℃湁瀹炶川鎬х殑榪涘睍錛屾湇鍔″櫒榪樻槸鍩烘湰涓婃瘡3涓皬鏃跺畷鏈轟竴嬈°傜敱浜庝笂灞傞昏緫澶ч儴鍒嗛兘鍦ㄦ垜閭o紝鎵浠ュ帇鍔涙瘮杈冨ぇ錛屽畷鏈虹殑鐩存帴鍘熷洜鏄痟ashtable鐨勪竴涓《鐨勬寚閽堝紓甯革紝
榪欎釜hashtable鏄鏋朵唬鐮佺殑涓涓唴閮ㄦ垚鍛橈紝鎸夐亾鐞嗘垜浠槸鏃犱粠鐮村潖鐨勶紝鍙湁鍙兘鏄綰跨▼鐜涓嬭凱浠e櫒鎹熷潖瀵艱嚧鐨勩?br />浣嗘槸妗嗘灦浠g爜鍦ㄨ繖涓湴鏂圭‘瀹炴棤鎳堝彲鍑伙紝鎵浠ョ湡姝g殑鍘熷洜搴旇榪樻槸涓婂眰浠g爜鐮村潖浜嗗爢鍐呭瓨錛屽緢鍙兘鏄竴涓猰emcpy瓚婄晫瀵艱嚧鐨勩傝繖姣曠珶鏄釜鐚滄兂錛屽浣曟壘鍒拌瘉鎹憿錛岃繖鏄釜闂銆?br />鎶婃墍鏈変唬鐮侀噷鐨刴emcpy嫻忚浜嗕竴閬嶏紝娌℃湁鍙戠幇鏄庢樉闂銆?br />

鐚滄祴

  涓鑸父鎴忎腑姣旇緝瀹規槗鍑虹幇浣嗘槸涓嶅ソ鏌ョ殑闂寰堝鏃跺欓兘鏄剼鏈紙lua錛夊鑷寸殑錛屾垜浠殑鑴氭湰閮ㄥ垎鏄竴涓悓浜嬪嚑騫村墠鍐欑殑錛屽湪鍑犱釜浜у搧涓兘浣跨敤榪囷紝鎸夐亾鐞嗘病榪欎箞鑴嗗急錛屼笉榪囪佸ぇ榪樻槸鍜屾渶鍒濆紑鍙戣繖涓ā鍧楃殑閮ㄩ棬娌熼氫簡涓嬶紝
榪樼湡鍙戠幇闂浜嗭紝璧剁揣鎷夸簡鏂扮殑鐗堟湰鏇存柊涓婂幓銆傜粡榪囦竴澶╃殑瑙傚療錛屾湇鍔″櫒娌℃湁瀹曟満浜嗭紝OK錛岄棶棰樼宸цВ鍐充簡,鑳屼簡榪欎箞涔呯殑榛戦攨錛岀粓浜庢斁涓嬫潵浜嗐?br />

PageHeap

   鍋囧娌℃湁紕板閥瑙e喅浜嗚繖涓棶棰橈紝姝e父鐨勬濊礬璇ュ浣曡В鍐寵繖涓棶棰樺憿錛岃繖涓椂鍊欐垜鎬蹇祑indows浜嗭紝鍦╳indows涓嬫湁PageHeap鏉ヨВ鍐寵繖綾誨啓瓚婄晫鐨勯棶棰樸傚熀鏈濊礬灝辨槸姣忔鍒嗛厤鍐呭瓨鐨勬椂鍊欙紝閮藉皢鍐呭瓨鐨勭粨灝炬斁鍦ㄩ〉鐨勮竟緙橈紝绱ф帴鐫榪欏潡鍐呭瓨鍒嗛厤涓鍧椾笉鑳藉啓鐨勫唴瀛橈紝榪欐牱錛屼竴鏃﹀啓瓚婄晫錛屽氨浼氬啓寮傚父錛屽鑷村畷鏈恒俵inux涓嬫病鏈夌幇鎴愮殑宸ュ叿錛屼絾鏄痩inux鎻愪緵浜唌map鍔熻兘錛屾垜浠彲浠ヨ嚜宸卞疄鐜拌繖鏍蜂竴涓姛鑳斤紝褰撶劧錛岃繖涓鍒囬兘涓嶇敤鑷繁鍔ㄦ墜浜嗭紝tcmalloc宸茬粡鍖呭惈浜?br />榪欎釜鍔熻兘浜嗭紝涓嶈繃鍦ㄦ枃妗i噷鍩烘湰娌℃湁浠嬬粛錛屾垜涔熸槸鍦ㄩ槄璇籺cmalloc浠g爜鏃剁湅鍒扮殑錛岃繖涓姛鑳介粯璁ゆ槸鍏抽棴鐨勶紝鎵撳紑榪欎釜寮鍏抽渶瑕佹敼鍐欎唬鐮侊細

榪欎釜浠g爜鍦╠ebugallocation.cc閲岋細

DEFINE_bool(malloc_page_fence,
            EnvToBool("TCMALLOC_PAGE_FENCE", false),
            "Enables putting of memory allocations at page boundaries "
            "with a guard page following the allocation (to catch buffer "
            "overruns right when they happen).");
鎶奻alse鏀規垚true灝卞彲浠ヤ簡銆?br />鎯寵鍦ㄩ」鐩噷鍔犲叆PageHeap鍔熻兘錛屽彧闇瑕侀摼鎺ョ殑鏃跺欏姞涓?-ltcmalloc_debug鍗沖彲銆傛妸瀹冨姞鍏ラ」鐩腑錛岃瘯鐫榪愯涓嬶紝鐩存帴鎸備簡錛?br />浠旂粏涓鐪嬶紝鍘熸潵鏄」鐩腑寰堝鎴愬憳鍙橀噺娌℃湁鍒濆鍖栧鑷寸殑錛宼cmalloc_debug浼氳嚜鍔ㄥ皢new 鍜宮alloc鍑烘潵鐨勫唴瀛樺垵濮嬪寲涓烘寚瀹氬鹼紝榪欐牱錛屼竴鏃﹀彉閲忔病鏈夊垵濮嬪寲錛屽緢瀹規槗灝辨毚闇蹭簡銆?br />淇敼瀹岃繖涓棶棰樺悗錛岀紪璇戯紝鍐嶈繍琛岋紝榪樻槸鎸傦紝榪欎釜鏄痬protect鐨勬椂鍊欐寕鐨勶紝閿欒鏄唴瀛樹笉澶燂紝榪欐庝箞鍙兘鍛紝鍏跺疄鏄揪鍒頒簡璧勬簮闄愬埗浜嗐?br />echo 128000 > /proc/sys/vm/max_map_count
鎶妋ap鏁伴噺闄愬埗鍔犲ぇ,鍐嶈繍琛岋紝OK浜嗭紒
 
  浣嗘槸娓告垙Server鍚姩鍚庯紝鍙戠幇涓涓棶棰橈紝CPU闀挎湡澶勪簬100%錛屽鑷寸櫥闄嗕竴涓帺瀹墮兘寰堝洶闅撅紝gdb涓柇鍚庯紝info thread錛屽彂鐜板ぇ閮ㄥ垎鐨勬搷浣滈兘鍦╩map鍜宮protect,鏈寮濮?br />鎬鐤戞垜鐨刲inux鐗堟湰鏈夐棶棰橈紝瀵艱嚧榪?涓狝P鎱紝鍐欎簡嫻嬭瘯紼嬪簭璇曚簡涓嬶紝鍙戠幇鍏跺疄API涓嶆參錛屼及璁℃槸棰戠箒璋冪敤瀵艱嚧鐨勩?br />鎵浠ュ緱鎹㈢鎬濊礬浼樺寲涓嬫墠鍙互錛屽叾瀹炲ぇ閮ㄥ垎鎯呭喌涓嬶紝鎴戜滑free鐨勬椂鍊欙紝鏃犻渶灝嗛〉闈unmap鎺夛紝鍙互鍏坈ache榪涙潵錛屼笅嬈″垎閰嶇殑鏃跺欙紝濡傛灉鏈夛紝鐩存帴鎷挎潵鐢ㄥ氨鍙互浜嗐?br />鏈綆鍗曠殑cache綆楁硶灝辨槸瀹氫箟涓涓獀oid* s_pageCache[50000]鏁扮粍錛岄〉闈㈡暟鐩稿悓鐨勫唴瀛樼粍鎴愪竴涓摼琛紝鎸傚湪涓涓暟緇勯」涓嬶紝榪欎釜寰堝儚STL鐨勫皬鍐呭瓨澶勭悊錛屾垜浠彲浠ュ皢mmap鍑烘潵鐨勫唴瀛樼殑
鍓嶉潰鍑犱釜瀛楄妭(涓涓寚閽堝ぇ灝?鐢ㄤ簬绱㈠紩涓嬩竴涓猣reePage銆傚綋鐒惰繖涓繃紼嬮渶瑕佸姞閿侊紝涓嶈兘鐢╬thread鐨勯攣錛堝洜涓轟粬浠細璋冪敤malloc絳夊唴瀛樺垎閰嶅嚱鏁幫級錛屽繀欏葷敤spinlock錛屼粠linux婧愮爜閲岀洿鎺ユ妱涓涓繃鏉ュ嵆鍙?br />static void*   s_pagePool[MAX_PAGE_ALLOC]={0};

malloc鐨勬椂鍊欙紝鍏堜粠pagePool閲岄潰鑾峰彇:
// 鍏堜粠pagePool鎵?br /> void* pFreePage = NULL;
 spin_lock(&s_pageHeapLock);
 assert(nPageNum < MAX_PAGE_ALLOC);
 if(s_pagePool[nPageNum])
 {
   pFreePage = s_pagePool[nPageNum];
   void* pNextFreePage = *((void**)pFreePage);
   s_pagePool[nPageNum] = pNextFreePage;
 }
 spin_unlock(&s_pageHeapLock);

free鍐呭瓨鐨勬椂鍊欙紝鐩存帴鏀懼埌pagePoll閲?
spin_lock(&s_pageHeapLock);
 assert(nPageNum < MAX_PAGE_ALLOC);
 void* pNextFree = s_pagePool[nPageNum];
 *(void**)pAddress = pNextFree;
 s_pagePool[nPageNum] = pAddress;
 
 spin_unlock(&s_pageHeapLock);

緙栬瘧銆佽繍琛?OK浜嗭紝CPU榪呴熼檷涓嬫潵浜嗭紝絀鴻澆鐨勬椂鍊欎笉鍒?%,鑰屼笖涔熻兘杈懼埌媯嫻嬪啓婧㈠嚭鐨勯棶棰樸?br />


feixuwu 2011-05-14 21:16 鍙戣〃璇勮
]]>
core鍜孋allStackhttp://www.shnenglu.com/feixuwu/archive/2011/04/10/143871.htmlfeixuwufeixuwuSun, 10 Apr 2011 06:47:00 GMThttp://www.shnenglu.com/feixuwu/archive/2011/04/10/143871.htmlhttp://www.shnenglu.com/feixuwu/comments/143871.htmlhttp://www.shnenglu.com/feixuwu/archive/2011/04/10/143871.html#Feedback0http://www.shnenglu.com/feixuwu/comments/commentRss/143871.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/143871.html  鏈榪戦」鐩紑濮嬮泦涓祴璇曚簡錛屾湇鍔″櫒紼嬪簭緇忓父crash錛岀敱浜庢湇鍔″櫒涓鑸儏鍐典笅閮芥槸鍏抽棴浜哻ore鐨勶紝鎵浠ュソ鍑犳閮藉彧鑳介氳繃鏉備貢鐨勬棩蹇楁潵瀹氫綅闂銆?br>褰撶劧錛屾垜浠彲浠ラ氳繃ulimit鏉ユ墦寮core寮鍏籌紝涓嶈繃榪欏彲鑳藉甫鏉ユ柊鐨勯棶棰橈細鎴戜滑鐨勬湇鍔″櫒紼嬪簭姣忎釜core鏂囦歡澶ф鏈?G澶氾紝嫻嬭瘯鏈熼棿濡傛灉棰戠箒crash,娌℃湁娉ㄦ剰鍙婃椂娓呯悊錛屼竴涓嶅皬蹇冨氨浼氭妸紓佺洏鍐欐弧錛?br>鑰屼笖core鏂囦歡姣曠珶鏄拰榪涚▼紼嬪簭鐩稿叧鐨勶紝鏈夋椂鍊欐壘鐩稿簲鐗堟湰涔熸槸涓夯鐑︿簨銆?br>
鑳藉惁鍦ㄧ▼搴廲rash鐨勬椂鍊欙紝灝哻allStack浠ュ強鍙傛暟鍜屽眬閮ㄥ彉閲忛兘璁板綍鍒版棩蹇楅噷錛?br>榪欎釜鎶鏈叾瀹炲湪娓告垙瀹㈡埛绔凡緇忕敤浜嗗緢澶氬勾浜嗭紝涓鑸父鎴忓鎴風crash鍚庯紝閮戒細寮瑰嚭涓涓槸鍚﹀彂閫侀敊璇殑閫夋嫨妗嗭紝鍏跺疄灝辨槸鍙戦佺殑CallStack鐨勬棩蹇楀拰MiniDUmp鏂囦歡銆?br>瑕佹兂璁板綍CallStack灝卞繀鐒舵秹鍙婂埌Stack鐨勯亶鍘嗭紝linux涓嬬殑Stack閬嶅巻浣跨敤寰堢畝鍗曪紝綆鍗曠殑backtrace灝卞彲浠ユ悶瀹氾紝man backtrace灝辨湁鐜版垚鐨勪緥瀛愶紝
榪欐瘮windows涓嬪鏉傜殑澶寸柤鐨凷tackWalk濂界敤鐨勫銆?br>
瑙e喅浜哠tack閬嶅巻闂鍚庯紝榪樺墿涓嬩竴涓棶棰橈細濡備綍鍦ㄧ▼搴廲rash鐨勬椂鍊欏緱鍒伴氱煡鎵ц鎴戜滑鑷繁鐨刣ump浠g爜錛?br>鍦╓indwos涓嬫湁SEH寮傚父鏉ュ疄鐜拌繖涓姛鑳斤紝鑰宭inux涓嬪彲浠ラ氳繃浣跨敤淇″彿鍦ㄨ繘紼媍rash鐨勬椂鍊欐墽琛岃嚜宸辯殑澶勭悊浠g爜銆?br>
濂戒簡錛屽紑濮嬪啓涓畝鍗曚唬鐮佹祴璇曚笅:
棣栧厛璁劇疆鍑犱釜涓昏crash淇″彿鐨勫鐞嗗嚱鏁?br>signal(SIGSEGV, &DumpHelper::OnCrash);
signal(SIGABRT, &DumpHelper::OnCrash);
signal(SIGFPE, &DumpHelper::OnCrash);

鍦∣nCrash閲屾垜浠敤鍓嶉潰鎻愬埌鐨刡acktrace緋誨垪鍑芥暟錛屾潵璁板綍鍫嗘爤:
void* szStackFrame[100];
int nFrameCount = backtrace(szStackFrame, 100);
char** strFrameInfo = backtrace_symbols(szStackFrame, nFrameCount); 
char szDumpFileName[1024] = {0};
snprintf(szDumpFileName, sizeof(szDumpFileName), "dump_%u.log", (unsigned int)time(NULL) );
FILE* pFile = fopen(szDumpFileName, "wb");
if(!pFile) return;
for(int i = 0; i < nFrameCount; i++)
{
    fprintf(pFile, "%s\n", strFrameInfo[i]);
}
fclose(pFile);
free(strFrameInfo);

鎺ョ潃錛岃緗嚑涓祵濂楄皟鐢ㄧ殑鍑芥暟錛?br>void fun()
{
 //assert(0);
 int* p = NULL;
 *p =3;
}

void fun1()
{
 fun();
}

void fun2()
{
 fun1();
}

void fun3()
{
 fun2();
}

鏈鍚庯紝鎴戜滑鍦╩ain鍑芥暟閲屾墽琛宖un3,娉ㄦ剰緙栬瘧鐨勬椂鍊欏甫涓?rdynamic 閫夐」銆?span class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">

榪愯涓嬶紝鏋滅劧鍙互鎵撳嵃鍩烘湰鐨勫爢鏍堬紝涓嶈繃椹笂錛屽彂鐜頒簡鏂扮殑闂錛氳繖涓爢鏍堜俊鎭篃澶畝闄嬩簡錛屽彧鏈夎皟鐢ㄥ嚱鏁扮殑鍚嶅瓧錛屽叾浣欑殑鍙傛暟銆佸眬閮ㄥ彉閲忓畬鍏ㄦ病鏈夛紝
榪欎釜鍜実db鑳界湅鍒扮殑callStack宸窛涔熷お澶т簡銆?br>瑙e喅榪欎釜闂鏈綆鍗曠殑鍔炴硶灝辨槸鐢╣db鏉ユ墦鍗板爢鏍?鍦ㄨ繖閲岋紝gdb鍜屽叾浠栫▼搴忔湁鍖哄埆錛屽鏋滀綘璇曞浘閫氳繃 echo "bt"|gdb -p XXX>a.txt鏉ヨ幏寰楀爢鏍堬紝閭e皢浼氶潪甯稿け鏈涳紝
鏍規湰涓嶈搗浣滅敤錛実oogle浜嗕笅錛屽熀鏈病浠涔堣В鍐沖姙娉曘?br>涓嶈繃gdb 鍙互浠庢枃浠惰鍏ユ寚浠わ紝渚嬪 gdb XXX<cmddata錛岃繖緇欎簡鎴戜滑鏈轟細錛?br>system("echo  \"bt full|gcore\">testcmd");
  char dbx[160]={0};
     sprintf(dbx, "gdb -p %d ./main<testcmd >gdbdump_%d.log", getpid(), getpid() );
  system(dbx);

嫻嬭瘯榪愯錛屽彂鐜板彲浠ユ墦鍗拌緇嗙殑鍫嗘爤錛屼笉榪囷紝瑕佹眰鏈哄櫒涓婃湁gdb.
涓婇潰鐨勫懡浠よ繕dump浜嗕竴涓猚ore鏂囦歡錛屼笉榪囪繖涓猚ore鏂囦歡鐨勫爢鏍堜俊鎭槸閿欒鐨勶紝鎴戜笉鐭ラ亾涓轟粈涔堛傘傘傘?br>
澶氱嚎紼嬬幆澧冧笅浣跨敤涓婅堪鍔炴硶錛屽彧鑳借緭鍑轟竴涓嚎紼嬬殑鍫嗘爤錛岄渶瑕佸厛鑾峰彇綰跨▼鏁扮洰錛岀劧鍚庨愪釜綰跨▼鎵撳嵃鍫嗘爤銆?br>
鏈鍚庯紝涓轟簡閬垮厤褰卞搷姝e父鐨刢oredump,瑕佸湪OnCrash鐨勫鐞嗗嚱鏁伴噷灝嗕俊鍙風殑澶勭悊鍑芥暟璁劇疆涓洪粯璁ゃ?br>濡傛灉鎴戜竴瀹氳鏈塩ore鍛紝setrlimit鍚э紝鍘繪帀core闄愬埗鍗沖彲銆?/span>

feixuwu 2011-04-10 14:47 鍙戣〃璇勮
]]>
GCC欏圭洰緙栬瘧閫熷害浼樺寲http://www.shnenglu.com/feixuwu/archive/2011/03/19/142210.htmlfeixuwufeixuwuSat, 19 Mar 2011 08:39:00 GMThttp://www.shnenglu.com/feixuwu/archive/2011/03/19/142210.htmlhttp://www.shnenglu.com/feixuwu/comments/142210.htmlhttp://www.shnenglu.com/feixuwu/archive/2011/03/19/142210.html#Feedback5http://www.shnenglu.com/feixuwu/comments/commentRss/142210.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/142210.html鎵ц鏂囦歡錛屽熀鏈笉鑰冭檻緙栬瘧鎴愬姩鎬佸簱錛屾墍鏈変唬鐮佺殑澶存枃浠朵緷璧栦篃鏄竴鍥㈢碂錛岄殢鐫欏圭洰鐨勫澶э紝緙栬瘧閫熷害瓚婃潵瓚婃參錛屽埌鍚庢潵緙栬瘧涓涓」鐩?榪涚▼鍚屾椂緙栬瘧閮介渶瑕?0鏉ュ垎閽熴?br> 
  鍏跺疄鍒嗘瀽涓嬪彲浠ュ彂鐜幫紝涓昏鐨勭紪璇戦熷害鎹熻楀湪澶存枃浠朵笂錛屽挨鍏舵槸妯℃澘鐩稿叧鐨勫ご鏂囦歡銆俈C鏈変竴涓緙栬瘧澶存枃浠舵妧鏈紝灝嗗父鐢ㄧ殑鍏叡澶存枃浠舵斁鍦ㄤ竴璧鳳紝棰勫厛緙栬瘧鎴恜ch鏂囦歡錛岃繖鏍?br>鍙互鍔犲揩緙栬瘧閫熷害銆俫cc鍒板簳鏈夋病鏈夌被浼兼妧鏈憿錛屾墦寮gcc鐨勬墜鍐屾悳绱簡precompiled錛屽彂鐜拌繕鐪熸湁鐩稿叧浠嬬粛錛屼嬌鐢ㄦ柟娉曚篃寰堢畝鍗曘?br> 
涓昏鏄互涓嬫楠わ細
  1銆佸湪欏圭洰涓嬪緩绔嬩竴涓?stdafx.h鐨勬枃浠訛紝鍖呭惈浜嗗ぇ閮ㄥ垎鍏叡澶存枃浠躲傚湪姣忎釜cpp鏈寮濮嬮兘#include "stdafx.h"銆俢pp鏂囦歡鍖呭惈浜嗚繖涓緙栬瘧澶存枃浠跺悗錛屽氨鍙互灝嗗師鏉ュ拰
stdafx .h 閲屽ご鏂囦歡閲嶅鐨勫唴瀹瑰垹闄や簡錛屽挨鍏舵槸妯℃澘鐩稿叧鐨勫ご鏂囦歡錛屽彟澶栵紝闈濸CH鐨勫ご鏂囦歡閲屽敖閲忓皯鍖呭惈鍏朵粬澶存枃浠躲?nbsp;    
  2銆佷慨鏀筸akefile鏂囦歡, 鍔犲叆OBJ瀵?gch鐨勪緷璧?鐢ㄤ竴涓畝鍗曠殑欏圭洰鍋氱ず渚嬶紝涓鐪嬪氨鏄庣櫧
   
TARGET=TimerTest
PCH=stdafx.h.gch
PCH_H=stdafx.h
OBJ=stdafx.o TimerManager.o TimerTest.o

%.o:%.cpp
    g++ -Wall -c -g $^ -o $@

$(TARGET):$(OBJ)
    g++ -g  $^ -o $@


pch.d:stdafx.cpp
    g++ -g -MM stdafx.cpp |sed 's/stdafx.o/stdafx.h.gch/'>$@

-include pch.d

$(OBJ):$(PCH)
$(PCH):
    g++ $(PCH_H)

clean:
    rm -f $(OBJ) $(PCH)

    瀹屾垚浠ヤ笂鍐呭鍚庯紝make clean,鍐嶉噸鏂扮紪璇戯紝鍒濇浼拌鍙渶瑕?鍒嗛挓錛侊紒  鏁存暣浼樺寲浜?-5鍊嶃?br>      



feixuwu 2011-03-19 16:39 鍙戣〃璇勮
]]>
瀹氭椂鍣ㄧ殑瀹炵幇http://www.shnenglu.com/feixuwu/archive/2011/03/13/141744.htmlfeixuwufeixuwuSun, 13 Mar 2011 14:06:00 GMThttp://www.shnenglu.com/feixuwu/archive/2011/03/13/141744.htmlhttp://www.shnenglu.com/feixuwu/comments/141744.htmlhttp://www.shnenglu.com/feixuwu/archive/2011/03/13/141744.html#Feedback0http://www.shnenglu.com/feixuwu/comments/commentRss/141744.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/141744.html娌℃湁瀹氭椂鍣紝鎵鏈夐渶瑕佸畾鏃剁殑浠誨姟錛岄兘鍙兘娣誨姞綾諱技OnUpdate鐨勫嚱鏁幫紝鍦ㄤ富寰幆鐨勬椂鍊欐墽琛屻傚畾鏃墮渶姹傚皯鐨勬椂鍊欙紝鐪嬩笉鍑烘槑鏄劇殑闂錛屼絾鏄竴鏃﹁繖縐嶉渶姹傚浜嗭紝灝ゅ叾鏄緢澶氬唴閮ㄥ璞℃湁瀹氭椂闇姹傜殑鏃跺欙紝
榪欎釜闂灝辨瘮杈冩槑鏄句簡錛屽啓濂戒簡OnUpdate鍚庯紝榪樿寤虹珛涓鏉′粠涓誨驚鐜疢ainLoop鍒拌嚜韜玂nUpdate鐨勮皟鐢ㄩ摼銆?br> 
  浜嬩歡鍏跺疄灝辨槸涓涓箍鎾拰璁㈤槄鐨勫叧緋伙紝Delegate灝辨槸瀹炵幇榪欐牱涓濂楁満鍒剁殑鍒╁櫒錛岀洰鍓岲elegate鐨勫疄鐜頒富瑕佹湁2縐嶏紝涓縐嶆槸CodeProject涓婄殑涓涓狥astDelegate瀹炵幇錛屽彟澶栦竴涓瘮杈冨吀鍨嬬殑瀹炵幇灝辨槸boost鐨?br>瀹炵幇浜嗭紝鏃犺閲囧彇鍝瀹炵幇鏂規錛屽疄鐜伴毦搴﹂兘涓嶇畻澶ぇ銆?br>  Server褰撳墠妗嗘灦瀵瑰畾鏃跺櫒鏃犱換浣曟敮鎸侊紝鍙湁涓涓狣oMainLoop鐨勫嚱鏁板彲浠ユ淳鐢熸潵榪愯鑷繁鐨勫畾鏃墮昏緫銆?br>  鎴戝師鏉ラ兘鏄敤鐨凙CE灝佽鐨勭粍浠訛紝鐢ㄤ簡涓孌墊椂闂翠篃娌″彂鐜版槑鏄鵑棶棰橈紝涓嶈繃ACE鐨勫畾鏃跺櫒涓嶅お閫傚悎鍦ㄨ繖涓柊欏圭洰鐢紝涓昏鍘熷洜鏈夊涓嬪嚑鐐癸細
  1銆丄CE搴撳お澶т簡錛屼笉鎯充粎浠呬負浜嗗畾鏃跺櫒寮曞叆涓涓繖涔堝簽澶х殑搴撱?br>  2銆丄CE鐨勫畾鏃跺櫒闇瑕侀澶栧惎鍔ㄤ竴涓畾鏃跺櫒綰跨▼錛屽畾鏃朵換鍔℃槸鍦ㄥ畾鏃跺櫒綰跨▼璺戠殑錛岃屾垜浠殑欏圭洰閫昏緫鍏跺疄鏄湪鍗曚釜綰跨▼榪愯鐨勶紝濡傛灉鐩存帴閲囩敤ACE瀹氭椂鍣紝浼氱粰閫昏緫甯︽潵棰濆鐨勫鏉傚害銆傜敱浜庢暣涓昏緫綰跨▼鐨勬鏋舵槸鍏叡妯″潡錛屾墜澶翠篃娌℃湁浠g爜錛屾墍浠ュ皢瀹氭椂鍣ㄧ嚎紼嬬殑浠誨姟鍙戦佸埌涓婚昏緫綰跨▼榪愯涔熸槸涓嶅彲琛岀殑銆?br>  3銆丄CE鐨勫畾鏃跺櫒鏈夊緢澶氱錛孴IMER_QUEUE銆乀IMER_WHELL銆乀IMER_HEAP絳夛紝涓漢鎰熻榪欎簺瀹氭椂鍣ㄧ殑鎻掑叆銆佸彇娑堟搷浣滈兘姣旇緝鑰楁椂錛屽姞浠ユ敼瑁呮斁鍒頒富綰跨▼run鐨勫甫浠峰皢浼氬緢澶с?br>
鍏跺疄linux鍐呮牳灝辨湁涓涓瘮杈冮珮鎬ц兘鐨勫畾鏃跺櫒錛屼唬鐮佸湪kernel/Timer.c閲岋紝 2.6鍐呮牳鐨勫畾鏃跺櫒浠g爜鏇存槸綆媧併?br>linux鐨勫畾鏃朵換鍔¢兘鏄互jiffie 涓哄崟浣嶇殑錛宭inux灝嗘墍鏈夊畾鏃朵換鍔″垎涓?涓樁姊紝
struct tvec {
    struct list_head vec[TVN_SIZE];
};

struct tvec_root {
    struct list_head vec[TVR_SIZE];
};

struct tvec_base {
    spinlock_t lock;
    struct timer_list *running_timer;
    unsigned long timer_jiffies;
    struct tvec_root tv1;
    struct tvec tv2;
    struct tvec tv3;
    struct tvec tv4;
    struct tvec tv5;
} ____cacheline_aligned;

瀵逛竴涓柊鐨勫畾鏃朵換鍔★紝澶勭悊鏂規硶濡備笅:
static void internal_add_timer(struct tvec_base *base, struct timer_list *timer)
{
    unsigned long expires = timer->expires;
    unsigned long idx = expires - base->timer_jiffies;
    struct list_head *vec;

    if (idx < TVR_SIZE) {
        int i = expires & TVR_MASK;
        vec = base->tv1.vec + i;
    } else if (idx < 1 << (TVR_BITS + TVN_BITS)) {
        int i = (expires >> TVR_BITS) & TVN_MASK;
        vec = base->tv2.vec + i;
    } else if (idx < 1 << (TVR_BITS + 2 * TVN_BITS)) {
        int i = (expires >> (TVR_BITS + TVN_BITS)) & TVN_MASK;
        vec = base->tv3.vec + i;
    } else if (idx < 1 << (TVR_BITS + 3 * TVN_BITS)) {
        int i = (expires >> (TVR_BITS + 2 * TVN_BITS)) & TVN_MASK;
        vec = base->tv4.vec + i;
    } else if ((signed long) idx < 0) {
        /*
         * Can happen if you add a timer with expires == jiffies,
         * or you set a timer to go off in the past
         */
        vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK);
    } else {
        int i;
        /* If the timeout is larger than 0xffffffff on 64-bit
         * architectures then we use the maximum timeout:
         */
        if (idx > 0xffffffffUL) {
            idx = 0xffffffffUL;
            expires = idx + base->timer_jiffies;
        }
        i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK;
        vec = base->tv5.vec + i;
    }
    /*
     * Timers are FIFO:
     */
    list_add_tail(&timer->entry, vec);
}
浠庝笂鍙互鐪嬪埌Linux瀵瑰畾鏃跺櫒鐨勫鐞嗭細瀵瑰嵆灝嗗湪TVR_SIZE 涓猨iffies鍐呭埌杈劇殑瀹氭椂浠誨姟錛屽皢瀹冩寕鍒扮涓緇則v1 涓嬶紝鍏蜂綋灝辨槸鎸傚埌expires & TVR_MASK 瀵瑰簲鐨勫垪琛ㄤ笂鍘匯?br>鍚屼竴涓猨iffies鍒拌揪鐨勫畾鏃跺櫒鏄寕鍦ㄥ悓涓涓摼琛ㄧ殑銆?br>鍚岀悊錛屾寕鍒扮浜屼釜緇勭殑鏄?鍒版湡鏃墮棿灝忎簬 1 << (TVR_BITS + TVN_BITS) jiffies鐨勩?br>鎸傚埌絎笁涓粍鐨勬槸 鍒版湡鏃墮棿灝忎簬1 << (TVR_BITS + 2 * TVN_BITS) jiffies鐨勩?br>鎸傚埌絎洓涓粍鐨勬槸 鍒版湡鏃墮棿灝忎簬 1 << (TVR_BITS + 3 * TVN_BITS) jiffies鐨勩?br>瓚呰繃1 << (TVR_BITS + 3 * TVN_BITS) 鐨勬寕鍒扮浜旂粍銆?br>榪欐牱錛屾墍鏈夊埌鏈熺殑浠誨姟閮戒細鍦ㄧ涓緇勩備換浣曟椂鍒婚兘鍙互鐩存帴閫氳繃褰撳墠jiffies&TVR_SIZE 鏉ユ壘鍒伴渶瑕佽繍琛岀殑瀹氭椂鍣ㄤ換鍔″垪琛紝瀹氭椂鍣ㄧ殑鎻掑叆鏁堢巼灝辨槸O(1)銆?br>
涓嬮潰鏄畾鏃跺櫒鐨勮繍琛屼唬鐮侊細
static int cascade(struct tvec_base *base, struct tvec *tv, int index)
{
    /* cascade all the timers from tv up one level */
    struct timer_list *timer, *tmp;
    struct list_head tv_list;

    list_replace_init(tv->vec + index, &tv_list);

    /*
     * We are removing _all_ timers from the list, so we
     * don't have to detach them individually.
     */
    list_for_each_entry_safe(timer, tmp, &tv_list, entry) {
        BUG_ON(tbase_get_base(timer->base) != base);
        internal_add_timer(base, timer);
    }

    return index;
}

#define INDEX(N) ((base->timer_jiffies >> (TVR_BITS + (N) * TVN_BITS)) & TVN_MASK)

/**
 * __run_timers - run all expired timers (if any) on this CPU.
 * @base: the timer vector to be processed.
 *
 * This function cascades all vectors and executes all expired timer
 * vectors.
 */
static inline void __run_timers(struct tvec_base *base)
{
    struct timer_list *timer;

    spin_lock_irq(&base->lock);
    while (time_after_eq(jiffies, base->timer_jiffies)) {
        struct list_head work_list;
        struct list_head *head = &work_list;
        int index = base->timer_jiffies & TVR_MASK;

        /*
         * Cascade timers:
         */
        if (!index &&
            (!cascade(base, &base->tv2, INDEX(0))) &&
                (!cascade(base, &base->tv3, INDEX(1))) &&
                    !cascade(base, &base->tv4, INDEX(2)))
            cascade(base, &base->tv5, INDEX(3));
        ++base->timer_jiffies;
        list_replace_init(base->tv1.vec + index, &work_list);
        while (!list_empty(head)) {
            void (*fn)(unsigned long);
            unsigned long data;

            timer = list_first_entry(head, struct timer_list,entry);
            fn = timer->function;
            data = timer->data;

            timer_stats_account_timer(timer);

            set_running_timer(base, timer);
            detach_timer(timer, 1);
            spin_unlock_irq(&base->lock);
            {
                int preempt_count = preempt_count();
                fn(data);
                if (preempt_count != preempt_count()) {
                    printk(KERN_ERR "huh, entered %p "
                           "with preempt_count %08x, exited"
                           " with %08x?\n",
                           fn, preempt_count,
                           preempt_count());
                    BUG();
                }
            }
            spin_lock_irq(&base->lock);
        }
    }
    set_running_timer(base, NULL);
    spin_unlock_irq(&base->lock);
}
褰撶涓緇勮繍琛屽畬涓杞悗錛岄渶瑕佸皢tv2鐨勪竴緇勬柊鐨勫畾鏃朵換鍔″姞鍒扮涓緇勩傝繖灝卞ソ姣旀椂閽熺殑鎸囬拡錛岀閽堣繍琛屼竴鍦堝悗錛屽垎閽堟榪涗竴鏍鹼紝鍚庣畫鐨勮皟鏁撮兘鏄被浼箋?
cascade 灝辨槸璐熻矗灝嗕笅涓緇勭殑瀹氭椂浠誨姟娣誨姞鍒板墠闈㈢殑浠誨姟闃舵銆傚彧鏈夊綋絎竴杞殑瀹氭椂浠誨姟鍏ㄩ儴榪愯瀹屾瘯鍚庯紝鎵嶄細闇瑕佷粠絎簩杞皟鍏ユ柊鐨勪換鍔★紝鍙湁絎簩綰у埆鐨勪換鍔¢兘璋冨叆瀹屾瘯鍚庯紝鎵嶉渶瑕佷粠絎笁杞殑瀹氭椂浠誨姟璋冨叆鏂扮殑浠誨姟錛?br> if (!index &&
            (!cascade(base, &base->tv2, INDEX(0))) &&
                (!cascade(base, &base->tv3, INDEX(1))) &&
                    !cascade(base, &base->tv4, INDEX(2)))
            cascade(base, &base->tv5, INDEX(3));

榪欏氨鏄礋璐h皟鏁寸殑浠g爜錛岀浉褰撶殑綆媧併?br>鍙傜収涓婅堪浠g爜瀹炵幇涓涓畾鏃跺櫒鍚庯紝鍔犲叆4000涓畾鏃朵換鍔★細
    for(int i = 1; i < 4000; i++)
    {
        g_TimerHandle[i] = g_timerManager.setTimer(&tmpSink1, i, i*10, "ss");
    }
浠?0姣鍒?000*10姣,榪愯鍚庯紝嫻嬭瘯涓嬫ц兘錛?br>鍑芥暟鍚?nbsp;                                   鎵ц嬈℃暟    鏈灝忔椂闂?nbsp;    騫沖潎鏃墮棿       鏈澶ф椂闂?br>TimerManager::runTimer    2170566        10              10               3046   
鍙互鐪嬪埌錛岄櫎浜嗕釜鍒椂闂存槸鍥犱負綰跨▼鍒囨崲瀵艱嚧鏁版嵁姣旇緝澶у,騫沖潎姣忔榪愯runTimer鐨勬椂闂存槸10寰銆?br>榪欎釜鏃墮棿榪樺寘鎷瘡涓畾鏃跺櫒鐨勬墽琛屾秷鑰楋紝鏁堢巼榪樻槸涓嶉敊鐨勩?br>

feixuwu 2011-03-13 22:06 鍙戣〃璇勮
]]>
Ogre鍒濅綋楠?/title><link>http://www.shnenglu.com/feixuwu/archive/2010/09/25/127669.html</link><dc:creator>feixuwu</dc:creator><author>feixuwu</author><pubDate>Sat, 25 Sep 2010 13:44:00 GMT</pubDate><guid>http://www.shnenglu.com/feixuwu/archive/2010/09/25/127669.html</guid><wfw:comment>http://www.shnenglu.com/feixuwu/comments/127669.html</wfw:comment><comments>http://www.shnenglu.com/feixuwu/archive/2010/09/25/127669.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/feixuwu/comments/commentRss/127669.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/feixuwu/services/trackbacks/127669.html</trackback:ping><description><![CDATA[  鏈榪戞父鎴忓張瑕佸皝嫻嬩簡錛屽伐浣滄瘮杈冪揣寮狅紝鏅氫笂涓嬬彮浜嗘瘮杈冪瘡錛屽洖瀹舵噿寰楀啓浠g爜浜嗭紝涓嶈繃欏轟究鍊掓槸緇х畫瀹屾垚浜嗗 鏂板墤渚犳儏緙橈紙鍜屾湀褰變紶璇寸殑璧勬簮鏍煎紡鐩稿悓錛夌殑璧勬簮閫嗗悜銆傚畬鎴愪簡璧勬簮閫嗗悜鍚庯紝紿佺劧鍏磋嚧鏉ヤ簡錛屽啓浜嗕釜綆鍗曠殑鍦板浘鏌ョ湅鍣紝鍒扮洰鍓嶄負姝紝涓鍒囪繍琛屾甯搞傚悗鏉ュ仛浜嗕釜綆鍗曠殑Demo錛屽疄鐜頒簡鍩烘湰鐨勫璺拰鎶鑳藉姩鐢繪挱鏀撅紝鍏跺疄鏂板墤渚犳儏緙樺師鏈殑鎶鑳芥晥鏋滀互浠婂ぉ鐨勭溂鍏夌湅璧鋒潵涔熻繕鍙互錛屽嵆渚垮姝わ紝鎴戣繕鏄泦鎴愪簡hge鐨勭矑瀛愮郴緇熻繘鍘伙紝璇曚簡涓嬫晥鏋滐紝榪樻槸鎸哄鎬殑銆?br>鍋氬畬浜嗚繖浜涗箣鍚庯紝鏈兂涓烘垜鐨凱SP灞卞涓涓柊鍓戜緺鎯呯紭銆備笉鏂欏悗鏉ヨ繛緇姞浜嗗ソ鍑犲ぉ鐝紝鍔犱簡鍑犲ぉ鐝箣鍚庯紝浜轟篃鎳掍簡錛屽北瀵ㄦ父鎴忕殑浜嬫儏涔熷氨鏃犵柧鑰岀粓浜嗐?br>鍓嶉潰鍐欒繃鍑犵瘒閫嗗悜宸ョ▼鐨勬枃绔狅紝鍓嶅嚑澶╃炕鍑烘潵鐪嬩簡涓嬶紝鎰熻鍍忔槸鍙︿竴涓漢鍐欑殑澶╀功錛屾垜鑷繁鐪嬭嚜宸辯殑鏂囩珷灝氫笖濡傛錛屽埆浜哄氨鏇翠笉鐢ㄨ浜嗭紝鍏跺疄瀵瑰ぇ閮ㄥ垎浜鴻岃█錛屽叧蹇冪殑鍙槸閫嗗悜鐨勬垚鏋溿傚鏂板墤渚犳儏緙樼殑璧勬簮鍜岀浉鍏蟲覆鏌撴劅鍏磋叮鐨勬湅鍙嬪彲浠ュ崟鐙珽mail鎴戙?<br>  寮濮嬮槄璇籓gre浠g爜姝f槸鍦ㄨ繖鐧炬棤鑱婅禆鐨勭姸鎬佷笅寮濮嬬殑錛孫gre鎺ㄥ嚭鏉ュ緢澶氬勾浜嗭紝璨屼技05騫村氨鍚鏈嬪弸璇磋搗榪囪繖涓」鐩紝涓嶈繃鎴戜竴鍚戞槸涓撴敞鏈嶅姟绔紑鍙戯紝瀵瑰鎴風寮鍙戠粡楠屼笉鏄緢澶氾紝鍦?D棰嗗煙灝卞畬鍏ㄦ槸鐨勬柊鎵嬩簡錛屾墍浠ヤ竴鐩翠篃娌′粩緇嗙爺絀躲傝繖鍑犲ぉ鎷胯搗鍘熸潵涓嬭澆鐨勪竴涓増鏈紝綆鍗曡浜嗕笅浠g爜銆?br>Ogre鐨勭粨鏋勮繕鏄緢娓呮櫚鐨勶紝鍜屾墜鍐屼笂璇寸殑涓鏍鳳紝涓昏灝辨槸閭e嚑涓璞★紝Demo澶ч儴鍒嗕篃寰堢畝鍗曪紝浠g爜閲忎笉澶氾紝鐪嬭搗鏉ュ緢鎸浜哄績銆?br>浣嗘槸瀵規垜榪欐牱鐨勬柊鎵嬫潵璇達紝棣栧厛鎯充簡瑙g殑褰撶劧鏄覆鏌撴祦紼嬨?Ogre鐨勬覆鏌撴祦紼嬬‘瀹炰細璁?D鏂版墜涓嶉傚簲錛屽畠鏄粠RenderTarget寮濮嬬殑錛屼竴涓猂enderTarget鍙互鏈夊嚑涓猇iewPort錛屾瘡涓猇iewPort閮芥湁涓涓嫭绔嬬殑鎽勫儚鏈猴紝榪欏彲浠ュ疄鐜板悓灞忓箷澶氫釜娓叉煋銆?br>閫氳繃ViewPort瀵硅薄鐨剈pdate璋冪敤<br> mCamera->_renderScene(this, mShowOverlays); <br>鏉ユ墽琛屽満鏅覆鏌擄紝鑰屽満鏅覆鏌撻噷錛屾渶閲嶈鐨勮綆梍findVisibleObjects浜嗭紝<br>榪欎釜鍑芥暟灝嗗彲瑙佺殑鐗╀綋娣誨姞鍒版覆鏌撻槦鍒楅噷錛岃繖涓嚱鏁伴潪甯哥殑緇曪紝閲岄潰榪樼敤鍒頒簡Vistor,綺劇涓嶅ソ瀹規槗琚粫鏅曪紝濂藉湪鎴戞尯浣忎簡錛岀啲榪囨潵浜嗐?br>鐔熸倝浜嗗ぇ鑷寸殑娓叉煋嫻佺▼鍚庯紝鎴戣寰楄鍐欑偣涓滆タ鏉ュ疄鎴樹簡銆?br>3D鏁欑▼鐨勫紑濮嬩竴鑸細鏁欏ぇ瀹剁敾涓夎褰紝鎵浠ユ垜涔熸兂鐢∣gre鐢諱釜涓夎褰㈢帺鐜╋紝<br>涓寮濮嬶紝鎴戜篃鎯充粠鍍忛偅浜汥emo涓鏍蜂粠ExampleApplication緇ф壙錛屼笉榪囨垜鍙戠幇榪欐牱鍚姩澶參浜嗭紝鑰屼笖鎴戜笉闇瑕佸姞杞介偅涔堝鐨勬潗璐紝<br>鎵浠ヨ嚜宸辨墜鍔–onfigure浜嗭紝浠g爜濡備笅:<br>Ogre::LogManager* pLogManager = new Ogre::LogManager;<br>    Ogre::Log* pLog = pLogManager->createLog("ogreLearn1.log");<br>    pLog->setDebugOutputEnabled(true);<br><br>    Ogre::Root* pRootObject = new Ogre::Root;<br>    pRootObject->loadPlugin("RenderSystem_Direct3D9_d.dll");<br>    pRootObject->loadPlugin("Plugin_OctreeSceneManager_d.dll");<br>    <br>    Ogre::RenderSystem* pRenderSystem = pRootObject->getRenderSystemByName("Direct3D9 Rendering Subsystem");<br>    pRenderSystem->setConfigOption("Full Screen", "False");<br>    pRootObject->setRenderSystem(pRenderSystem);    <br>    Ogre::RenderWindow* pRenderWindow = pRootObject->initialise(true); <br><br>緙栬瘧嫻嬭瘯浜嗕笅錛屽彲浠ユ甯歌繍琛岋紝涓嶈繃鍙戠幇灞忓箷鏄姳鐨勶紝鎴戣繕娌℃湁鍒涘緩鍦烘櫙鍛紝緇х畫娣誨姞鎽勫儚鏈哄拰ViewPort浠ュ強鍦烘櫙<br>// 鍒涘緩鍦烘櫙鍜屾憚鍍忔満浠ュ強ViewPort<br>    Ogre::SceneManager* pSceneManager = pRootObject->createSceneManager(Ogre::ST_GENERIC, "OgreLearn1");<br>    Ogre::Camera* pCamera = pSceneManager->createCamera("MainCamara");<br>    pCamera->setPosition(0.0, 0.0, -20.0);<br>    pCamera->lookAt(0, 0, 0);<br>    pCamera->setNearClipDistance(2);<br><br>    Ogre::Viewport* pViewPort = pRenderWindow->addViewport(pCamera);<br>    pViewPort->setBackgroundColour(Ogre::ColourValue(0, 0, 0, 1.0f) );<br>    pCamera->setAspectRatio(pViewPort->getActualWidth()/pViewPort->getActualHeight() ); <br><br>鏈鍚庡姞涓妏RootObject->startRendering(); <br> 緙栬瘧榪愯錛屼竴鍒囨甯革紝灞忓箷棰滆壊涔熷彉鎴愪簡鎯寵鐨勯粦鑹詫紝鎭╋紝涓嬩竴姝ヨ娣誨姞涓夎褰簡錛屾垜涓嶅お鍠滄鐢∣greManualObject錛屼竴鍫嗙殑綣佺悙鎿嶄綔銆傝繖閲岀敤鑷畾涔夌殑Mesh鏉ョ粯鍒?瑙掑艦銆?br>pSceneManager->setAmbientLight(Ogre::ColourValue(0.2, 0.2, 0.2) );<br>        Ogre::MeshPtr pMeshData = Ogre::MeshManager::getSingleton().createManual("Learn", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);<br>        Ogre::SubMesh* pSubMesh = pMeshData->createSubMesh();<br>        pSubMesh->useSharedVertices = false;<br>        pSubMesh->vertexData = new Ogre::VertexData;<br>        pSubMesh->vertexData->vertexStart = 0;<br>        pSubMesh->vertexData->vertexCount = 3;<br><br> 鍏堣緗簡鐜鍏?鍏跺疄娌″暐鐢紝鎴戝悗闈細紱佹)錛岀劧鍚庡垱寤轟簡涓涓嚜瀹氫箟鐨凪esh,<br>绱ф帴鐫鐨勬槸鍒涘緩涓涓猄ubMesh錛岃鐭ラ亾Ogre涓渶灝忕殑緗戞牸灝辨槸SubMesh,鍒涘緩濂絊ubMesh鍚庯紝瑕佸~鍏呯綉鏍肩粨鏋勪簡錛?br>鍒涘緩浜嗕竴涓猇ertexData,璁劇疆欏剁偣鏁扮洰涓?錛堜篃灝辨槸涓涓笁瑙掑艦錛夛紝涓嬮潰璇ュ畾涔夐《鐐規牸寮忎簡錛?br>Ogre::VertexDeclaration* pDecle = pSubMesh->vertexData->vertexDeclaration;<br>        size_t sOffset = 0;<br>        pDecle->addElement(0, sOffset, Ogre::VET_FLOAT3, Ogre::VES_POSITION);<br>        sOffset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3);<br>        pDecle->addElement(0, sOffset, Ogre::VET_COLOUR, Ogre::VES_DIFFUSE);<br>        sOffset += Ogre::VertexElement::getTypeSize(Ogre::VET_COLOUR); <br><br>涓婅堪浠g爜瀹氫箟浜嗛《鐐規牸寮忥紝鍙湁鍩烘湰鐨勫潗鏍囧拰棰滆壊銆?br>涓嬩竴姝ュ皢鏄敵璇鋒樉瀛橈紝濉厖欏剁偣緇撴瀯銆?br>Ogre::HardwareVertexBufferSharedPtr vBuf = Ogre::HardwareBufferManager::getSingleton().createVertexBuffer(sOffset, 3, Ogre::HardwareBuffer::HBU_STATIC_WRITE_ONLY);<br>        float* pReal = static_cast<float*>(vBuf->lock(Ogre::HardwareBuffer::HBL_DISCARD));<br>        Ogre::RGBA* pColor = NULL;<br><br>        *pReal++ = -2.0f;<br>        *pReal++ = 0.0f;<br>        *pReal++ = 0.0f;<br>        pColor = (Ogre::RGBA*)pReal;<br>        pRenderSystem->convertColourValue(Ogre::ColourValue(1.0f, 0.0, 0, 0.0f), pColor);<br>        pReal = (float*)(pColor+1);<br>        <br>        *pReal++ = 0.0f;<br>        *pReal++ = 2.0f;<br>        *pReal++ = 0.0f;<br>        pColor = (Ogre::RGBA*)pReal;<br>        pRenderSystem->convertColourValue(Ogre::ColourValue(0.0f, 0, 1.0, 1.0f), pColor);<br>        pReal = (float*)(pColor+1);<br><br><br>        *pReal++ = 2.0f;<br>        *pReal++ = 0.0f;<br>        *pReal++ = 0.0f;<br>        pColor = (Ogre::RGBA*)pReal;<br>        pRenderSystem->convertColourValue(Ogre::ColourValue(1.0f, 0, 0, 1.0f), pColor);<br>        pReal = (float*)(pColor+1);<br>        vBuf->unlock();<br>        pSubMesh->vertexData->vertexBufferBinding->setBinding(0, vBuf);<br>        <br>        pMeshData->load();<br>        pMeshData->_setBounds(Ogre::AxisAlignedBox(-2, 0, -1, 2, 2, 1) ); <br>濉厖欏剁偣鍚庯紝璁劇疆緗戞牸鍖呭洿鐩掞紝榪欐牱涓涓嚜瀹氫箟鐨勭綉鏍煎氨鍒涘緩濂戒簡錛屾帴涓嬫潵瑕佸垱寤轟竴涓嬌鐢ㄨ緗戞牸鐨勫疄浣撲簡<br>    Ogre::Entity* pEntity = pSceneManager->createEntity("TestEntity", "Learn");<br>        pEntity->setMaterialName("BaseWhiteNoLighting");<br><br>        pSceneManager->getRootSceneNode()->createChildSceneNode()->attachObject(pEntity);<br>        pEntity->getParentNode()->setPosition(3, 0, 0);<br>        pEntity->getParentNode()->rotate(Ogre::Quaternion(1.0f, 1.0f, 0, 1.0f) ); <br><br>濂戒簡錛岃繖鏍峰疄浣撲篃鍒涘緩濂戒簡錛屾帴涓嬫潵鎵ц娓叉煋鍚э細<br>pRootObject->startRendering(); <br><br> <h2>閬囧埌鐨勯棶棰?/h2>   涓婅堪浠g爜鏄繍琛屾甯哥殑錛屼絾鏄竴寮濮嬶紝鎴戞墽琛岀殑緇撴灉鏄湅涓嶅埌浠諱綍涓滆タ錛岃窡韙簡涓嬶紝鍙戠幇瀹炰綋姣忔閮借鎽勫儚鏈鴻鍓簡錛屾墠鍙戣鑷畾涔塎esh瑕佽嚜宸辮緗寘鍥寸洅瀛愶紝<br>璁劇疆鍙寘鍥寸洅瀛愩?br> 璁劇疆浜嗗寘鍥寸洅鍚庯紝鏁版嵁宸茬粡榪涘叆浜咲3D鐨勬覆鏌撶閬擄紝浣嗘槸榪樻槸娌$湅鍒頒笁瑙掑艦錛屼粩緇嗚瀵燂紝鍘熸潵鎽勫儚鏈哄鐫鐨勬槸涓夎褰㈢殑鑳岄潰銆傘傘?br>璋冩暣鎽勫儚鏈哄悗錛岀粓浜庤兘鐪嬪埌涓涓笁瑙掑艦浜嗭紝涓嶈繃鏄櫧鑹茬殑銆傘傘?br>浠庤繖涓棁鐘剁湅錛屽簲璇ユ槸娌℃湁鍏抽棴鍏夌収瀵艱嚧鐨勶紝浣嗘槸鎴戞槑鏄庝富鍔ㄨ皟鐢≧enderSystem鍏抽棴鍏夌収浜嗗晩錛屼粩緇嗚窡韙簡涓嬪師鏉ユ槸鏉愯川鍦ㄦ崳涔憋紝<br>榛樿鐨勬潗璐ㄦ槸寮鍚簡鍏夌収鐨勶紝鎵浠ュ湪娓叉煋鍓嶇殑SceneManager::_setPass 鐨勬椂鍊欙紝寮鍚簡鍏夌収銆?br>榪欏ソ鍔烇紝涓誨姩璁劇疆浜嗗叧闂厜鐓х殑鏉愯川"BaseWhiteNoLighting" 鍚庯紝緇堜簬鐪嬪埌浜嗗僵鑹蹭笁瑙掑艦浜嗐?br><br><br> <img src ="http://www.shnenglu.com/feixuwu/aggbug/127669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/feixuwu/" target="_blank">feixuwu</a> 2010-09-25 21:44 <a href="http://www.shnenglu.com/feixuwu/archive/2010/09/25/127669.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>BOOR璇籶df鍐呭瓨闂瑙e喅http://www.shnenglu.com/feixuwu/archive/2010/08/04/122227.htmlfeixuwufeixuwuWed, 04 Aug 2010 09:41:00 GMThttp://www.shnenglu.com/feixuwu/archive/2010/08/04/122227.htmlhttp://www.shnenglu.com/feixuwu/comments/122227.htmlhttp://www.shnenglu.com/feixuwu/archive/2010/08/04/122227.html#Feedback2http://www.shnenglu.com/feixuwu/comments/commentRss/122227.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/122227.html鏀寔涓枃pdf鍜屼腑鏂噒xt,鑳芥紜樉紺轟腑鏂囩洰褰曘?br>


闂

涓嶈繃錛屾湁鐨勬湅鍙嬪弽鏄犳墦寮澶х殑pdf鏂囦歡鏃訛紝瀹規槗姝繪満銆?br>榪欏嚑澶╃湅浜嗕笅錛屾灉鐒跺彂鐜伴棶棰樹簡銆?涓轟簡鍔犲揩璇誨彇pdf欏甸潰閫熷害錛宐ookr涓寮濮嬪氨鍔犺澆浜嗘墍鏈夌殑pageTree鍒板唴瀛樹腑錛?br>榪欐牱鏄劇ず鐗瑰畾欏甸潰鐨勬椂鍊欙紝灝辨棤闇鏌ユ壘璇ラ〉闈㈢殑PageObject浜嗭紝榪欏湪PC鏈轟笂涓鑸病浠涔堥棶棰橈紝PC鏈烘湁铏氭嫙鍐呭瓨錛屽嵆浣縫df鏂囦歡寰堝ぇ錛屾棤闈炴槸鍔犺澆pageTree鎱㈢偣錛?br>涓嶈繃鍦≒SP涓婂氨涓嶈浜嗭紝PSP鐨勫唴瀛樻槸鏈夐檺鐨勶紝鑰屼笖娌℃湁铏氭嫙鍐呭瓨錛屾墍浠ュ鏋淧ageTree寰堝ぇ錛岄偅涔堝緢鍙兘浼氬鑷村唴瀛樹笉澶燂紝鐩存帴姝繪満浜嗐傘傘傘?br>


瑙e喅鍔炴硶

瑙e喅鍔炴硶鍏跺疄涔熷緢綆鍗曪紝bookr鍚姩鐨勬椂鍊欎笉鍔犺澆PageTree錛岃屾槸鍦ㄦ瘡嬈℃樉紺虹殑鏃跺欙紝浠嶳oot寮濮嬩究鍒㏄ageTree鏌ヨPageObject瀵硅薄錛屼換鎰忎竴鏃跺埢錛屽唴瀛樹腑鍙湁涓涓狿ageObject瀵硅薄銆?br>榪欐牱灝卞氨鍩烘湰瑙e喅浜嗗唴瀛橀棶棰樸備笅涓涓棶棰樻槸鏌ヨ鏁堢巼鐨勯棶棰橈紝榪欎釜闂鍏跺疄涓嶉偅涔堜弗閲嶏紝PageTree鏈潵灝辨槸涓涓爲褰㈢粨鏋勶紝pdf鐨凱ageObject鏌ヨ鍙互浼樺寲鎴愪竴涓爲鏌ヨ錛岃繖鏍峰簲璇ヤ細寰堝揩錛屽疄闄呯紪鐮佹祴璇曪紝
鏍規湰鎰熻涓嶅埌淇敼鍓嶅悗緲婚〉閫熷害鏈夋槑鏄懼彉鍖栥?br>淇敼鍚庣敤 閲戝焊鍏ㄩ泦涓夎仈鐗?pdf(48.6M)嫻嬭瘯OK銆?br>

涓嬭澆

  1銆佷笅杞絟ttp://download.csdn.net/source/2578241  
      瑙e帇鍒皃sp/game鐩綍涓嬨?br>  2銆佷粠http://www.shnenglu.com/Files/feixuwu/EBOOT.rar 涓嬭澆錛岃В鍘嬪悗錛岃鐩栧師鏉ookr鐩綍涓嬬殑EBOOT.PBP鏂囦歡鍗沖彲銆?br>



feixuwu 2010-08-04 17:41 鍙戣〃璇勮
]]>
PSP鐗堟湰Bookr淇敼鏀寔涓枃http://www.shnenglu.com/feixuwu/archive/2010/07/26/121324.htmlfeixuwufeixuwuMon, 26 Jul 2010 13:41:00 GMThttp://www.shnenglu.com/feixuwu/archive/2010/07/26/121324.htmlhttp://www.shnenglu.com/feixuwu/comments/121324.htmlhttp://www.shnenglu.com/feixuwu/archive/2010/07/26/121324.html#Feedback5http://www.shnenglu.com/feixuwu/comments/commentRss/121324.htmlhttp://www.shnenglu.com/feixuwu/services/trackbacks/121324.html榪欑‘瀹炲緢璁╀漢涓嶇埥銆?br>榪囧勾鍓嶉棽鐫娌′簨錛岄『渚胯В鍐充簡bookr涓枃闂錛屾湰鏂囪褰曚簡閭f鏃墮棿鐨勫伐浣滐細濡備綍浠庡畼鏂圭増bookr淇敼錛岃В鍐硃df涓枃涔辯爜闂錛屾敮鎸乼xt涓枃銆佷腑鏂囩洰褰曟樉紺虹殑闂錛屾姏鐮栧紩鐜夊拰澶у鍒嗕韓涓嬫暣涓殑鎬濊礬
鍜岄棶棰樼殑瑙e喅鏂瑰紡錛岃В鍐寵繃紼嬫瘮杈冧笐闄嬶紝甯屾湜楂樻墜澶氬鎸囩偣銆?br>璨屼技榪欓噷涓嶈兘璐磋秴榪?M鐨勯檮浠訛紝榪欓噷灝變笉璐村嚭淇敼鍚庣殑bookr鐨勫彂甯冩枃浠朵簡錛屽湪PSP2000嫻嬭瘯閫氳繃錛屾渶榪戜篃涓鐩村湪鐢?闇瑕佺殑鍚屽鍙互email闂垜瑕併?br>娉細宸茬粡涓婁紶鍒癱sdn:http://download.csdn.net/source/2578241
鍐呯疆浜嗗皯閲忓瓧浣擄紝澶у鍙互鑷鎵╁睍瀛椾綋銆?br>


鍑嗗宸ヤ綔

  1銆佹惌寤篜SP寮鍙戠幆澧冦俿ourceforge涓婇泦鎴愮殑瀹夎鍖咃紝涓嬭澆涓嬫潵鐩存帴瀹夎鍗沖彲錛岃繖閲屼笉澶氳浜嗐?br>  2銆佷笅杞絙ookr婧愮爜錛屾垜涓嬭澆鐨勬槸0.7.1鐗堟湰銆傚彲浠ョ敤SVN涓嬭澆鏈鏂扮殑錛屼篃鍙互鍦╯ourceForge涓嬭澆鎵撳寘鐨勬簮鐮佸寘銆?br>

瑙e喅PDF涓枃闂

  bookr鐨勪唬鐮佺粨鏋滃緢娓呮櫚錛岀敱浜庢槸鐢╟++寮鍙戠殑錛屾墍浠ヤ唬鐮佸緢濂界悊瑙o紝BKLayer 鏄熀紜鐨勬樉紺虹被錛孊KDocument鏄熀紜鐨勬枃妗e鐞嗙被銆?br>bookr鏀寔pdf銆乼xt銆乭tml鍜?PalmDoc(鎴戞病鐢ㄨ繃榪欑)錛屽垎鍒敱浠嶣KDocument鐨勬淳鐢熺被鏉ュ鐞嗐?br>pdf鏄敱BKPDF鏉ュ鐞嗙殑銆傝В鍐硃df涓枃闂鐨勫叧閿氨鍦˙KPDF綾諱簡銆?br>

   1銆佸浣曡皟璇?/h2>        PSP寮鍙戦鍏堥亣鍒扮殑闂鏄皟璇曪紝PSP騫朵笉鑳藉疄鏃惰皟璇曪紝榪欑‘瀹炴槸涓棶棰樸傚ソ鍦˙ookr婧愮爜綰ф敮鎸佷簡璺ㄥ鉤鍙幫紝鍦╳indows涓嬶紝浣跨敤Makefile.cygwin 灝卞彲浠ョ紪璇戜竴涓獁indows鐗堟湰
鐨凚ookr浜嗐備竴鑸潵璇達紝鍦╳indows涓媌ookr榪愯姝e父錛屽ぇ鑷村湪PSP涓婄殑鐗堟湰涔熸槸姝e父鐨勶紝褰撶劧錛屽湪緇嗚妭涓婂叾瀹炴槸鏈夊樊鍒殑銆傚彟澶栵紝榪樺彲浠ラ氳繃鏃ュ織鏉ュ疄鐜拌窡韙?br>

   2銆佽В鍐沖瓧浣撻棶棰?/h2>       瀹為檯涓婏紝鏈変簺涓枃pdf鐢╞ookr鎵撳紑鏃舵槸姝e父鐨勶紝姣斿Programming_In_Lua.pdf,浣嗘槸鍦ㄦ墦寮緇忓父娓╀範鐨勯噾搴稿叏闆嗙殑鏃跺欙紝灝卞嚭鐜頒貢鐮佷簡銆?br>娉ㄦ剰鍒癇ookr鐨刾df鏄劇ず鍏跺疄鏄富瑕佹槸mudpf鏉ュ疄鐜扮殑銆傞偅涔坆ookr涓枃鏄劇ず闂鍒板簳鏄痓ookr鑷韓鐨勮繕鏄痬updf鐨勫憿錛?br>涓轟簡紜榪欎釜闂錛屽厛浠巗ourceforge涓嬭澆mupdf錛屽緩绔嬩竴涓獀s2005鐨勯」鐩紝緙栬瘧錛孫K錛屽彲浠ヨ繍琛屼簡錛屾墦寮閲戝焊鍏ㄩ泦涓鐪嬶紝榪樻槸涔辯爜錛岃繖涓嬪熀鏈彲浠ョ‘璁わ紝榪欎釜
闂鏄粠mupdf灝卞瓨鍦ㄤ簡銆傝瀹氫綅涓枃鏄劇ず涔辯爜鐨勯棶棰橈紝鑷劧闇瑕佷簡瑙df鐨勫唴閮ㄦ牸寮忥紝浠巃dobe鐨勫畼緗戜笅杞戒簡鏈鏂扮殑pdf鎵嬪唽錛屾墦寮涓鐪嬶紝涓鍏?00澶氶〉銆傘傘?br>濂藉湪鎴戜滑涓嶉渶瑕佷粠澶村紑濮嬮槄璇伙紝鍙鎸戝叧閿殑鍦版柟鐪嬪氨鍙互浜嗭紝涓枃闂涓鑸槸鍥犱負瀛椾綋寮曡搗鐨勩?br>
鎵浠ユ垜浠彲浠ョ洿鎺ユ寫Text鐨勫瓧浣撶浉鍏抽儴鍒嗙湅銆?br>mupdf鐨勫瓧浣撳姞杞藉湪pdf_loadfont閲岋紝浠巔df鎵嬪唽鍙煡錛宲df鏀寔浜嗚嫢騫茬瀛椾綋錛屽弽姝f垜鏄病浠涔堣愬績鐪嬩笅鍘伙紝鐩存帴鎵撳紑閲戝焊鍏ㄩ泦鍗曟璋冭瘯浜嗕笅錛?br> 鍙戠幇闂鍦═rueType瀛椾綋鐨勫姞杞介噷錛孴rueType瀛椾綋鐨勫姞杞芥槸loadsimplefont鏉ュ鐞嗙殑錛岄氳繃璺熻釜鍙煡錛屽湪鑾峰彇瀛椾綋鐨凢ontDescriptor鐨勬椂鍊欏け璐ヤ簡錛岀劧鍚庡氨鏄敤鍐呯疆鐨勯粯璁ゅ瓧浣撴潵澶勭悊浜嗐?br>榛樿瀛椾綋閮戒笉鏀寔涓枃錛屾墍浠ヨ嚜鐒跺氨鏄劇ず鎴愪貢鐮佷簡銆?br>鏈綆鍗曠殑鍔炴硶灝辨槸鍙鏄疶rueType瀛椾綋錛屼笉綆″叿浣撴槸浠涔堝瓧浣擄紝閮藉己鍒朵粠紜洏鍔犺澆涓縐嶆寚瀹氬瓧浣擄紙渚嬪榛戜綋錛夛紝褰撶劧錛岃繖鏍蜂細瀵艱嚧鎴戜滑鐪嬪埌鐨刾df鍜屽疄闄呭簲璇ユ樉紺虹殑鏍峰瓙鏈夊樊鍒紝鍙湁涓縐嶅瓧浣撲簡銆?br>璁╂垜浠厛榪欐牱璇曡瘯鍚э細鍦ㄥ彂鐜皃df_loadfontdescriptor 鍔犺澆澶辮觸鍚庯紝寮哄埗鐢╨oadCustomFont 鍔犺澆紜洏鎸囧畾瀛椾綋"font/simhei.ttf",榪欐牱瀛椾綋鍔犺澆鐨勯棶棰樿矊浼艱В鍐充簡銆?br>緙栬瘧錛岃繍琛岋紝鍙戠幇榪樻槸鏈夐棶棰橈紝榪欐鐨勯棶棰樺湪鏂囧瓧緙栫爜浜嗐?br>

   3銆佺紪鐮侀棶棰?/h2>     涓鑸樉紺轟笉姝e父鐨勪腑鏂噋df閮芥槸GBK緙栫爜鐨勶紝mupdf鐨勬樉紺烘槸閫氳繃濡備笅涓や釜姝ラ鏉ュ仛鐨勶細
   棣栧厛瑙g爜錛屽皢鏂囧瓧鍐呭鍏ㄩ儴杞寲鎴恈id錛岀劧鍚庡皢瑕佹樉紺虹殑cid鍏ㄩ儴push鍒頒竴涓槦鍒楋紝鐒跺悗閬嶅巻cid,灝哻id杞寲鎴恎id(瀵箃rueType灝辨槸杞垚unicode)錛屾帴鐫鏄劇ず銆?br>mupdf鏈韓鏈変竴涓瘮杈冧紭闆呯殑鍔炴硶鏉ヨВ鐮侊紝閫氳繃pdf_lookupcmap鏉ュ緱鍒皍nicode錛屾垜鐢ㄤ簡姣旇緝絎ㄧ殑鍔炴硶錛氳嚜宸辨毚鍔涘仛GBK鍒皍nicode鐨勮漿鎹€?br>涓鑸湪windows鍜宭inux涓嬮兘鏈夊簱鎴栬匒PI鏉ュ畬鎴愮紪鐮佽漿鎹㈤棶棰樸備笉榪囧湪PSP涓嬪嵈娌℃湁榪欐牱鐨凙PI,鍙ソ鑷繁鍋氫竴涓紪鐮佽漿鎹簡錛?br>鍦╤ttp://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT 鎵懼埌浜嗚漿鎹㈣〃錛屽鍒剁矘璐村埌txt鏂囨湰錛岀敤lua鑴氭湰澶勭悊涓嬶紝鐢熸垚涓涓?c鏂囦歡錛屽垎鍒皢GBK鍜寀nicode鍊煎瓨鍌ㄥ埌2涓暟緇勯噷錛?br>鐜板湪浣犱竴瀹氱煡閬撴庝箞杞崲浜嗭細浜屽垎鏌ユ壘鍒版寚瀹欸BK鍊煎湪GBK鏁扮粍鐨勪笅鏍囷紝鐒跺悗鐩存帴鍦╱nicode鏁扮粍鐢ㄨ繖涓笅鏍囷紝鍙互寰楀埌瀵瑰簲鐨剈nicode鍊箋?br>緙栬瘧嫻嬭瘯錛孫K浜嗭紝緇堜簬鑳芥甯告樉紺轟腑鏂囦簡銆?br>涓嶈繃鍒扮幇鍦ㄤ負姝紝鏁翠釜欏甸潰鍙湁涓縐嶅瓧浣擄紝瑕佽В鍐寵繖涓棶棰橈紝鎴戜滑鍙互鏍規嵁鍚嶅瓧鍖歸厤鏉ユ壘鍒版寚瀹氱殑瀛椾綋錛屽悕瀛楀尮閰嶄笉鍒扮殑錛屼嬌鐢ㄩ粯璁ょ殑瀛椾綋錛堟垜鏄敤鐨剆imsun.ttf錛夈?br>

 txt涓枃闂

   鐩稿鏉ヨtxt鐨勪腑鏂囬棶棰樻瘮杈冨ソ瑙e喅浜嗭紝鍩烘湰閮芥槸浜涘父瑙勫紑鍙戯紝浠嶧zFont.cpp浠g爜鍙煡錛宼xt鏄劇ず涓嶄簡涓枃涓昏鏄瓧浣撳姞杞界殑鏃跺欙紝鍙姞杞戒簡鍓嶉潰鐨?56涓瓧褰€傞偅涔堟垜浠彧瑕佸仛2浠朵簨鎯呭氨鍙互鏄劇ず涓枃浜嗭細
  1銆佹枃瀛楄В鐮侊紝鐜板湪澶ч儴鍒嗙殑txt鐢靛瓙涔﹂兘鏄痝bk緙栫爜鐨勶紝榪欐牱姣旇緝鐪佺┖闂達紝瑙g爜綆楁硶鍓嶉潰宸茬粡鎻愯繃浜嗐?br>  2銆佷腑鏂囨枃瀛楃汗鐞嗙鐞嗗拰鏁堢巼闂銆備竴鑸湪PC娓告垙涓紝涓枃瀛椾綋涓鑸兘鏄皢澶氫釜榪炵畫鐨勬眽瀛楁寜鐓у瓨鍌ㄥ埌涓寮?4X64鐨勭汗鐞嗕腑錛岃繖鏍峰彲浠ヨ妭鐪佹樉瀛橈紝闄嶄綆娓叉煋鎵規(3D鑿滈笩鐨勭畝鍗曟帹嫻?銆?br>涓嶈繃濡傛灉鍦╬sp涔熻繖鏍峰仛錛屼細鍙戠幇鏄劇ず欏甸潰鏄湪澶參錛屾渶鍚庡彂鐜幫紝鏈綆鍗曠殑鍔炴硶灞呯劧鏄瘡涓眽瀛椾竴涓汗鐞嗭紝褰撶劧瑕佸疄闄呯敤鍒扮殑鏃跺欐墠鐢熸垚璇ユ眽瀛楃汗鐞嗐?br>  3銆佹樉紺洪〉鍒嗗壊銆俠ookr闃呰txt鐨勬椂鍊欙紝浼氳嚜宸卞皢鐢靛瓙涔﹀垎鍓叉垚鑻ュ共欏甸潰錛屽茍涓旀敮鎸佷功絳懼姛鑳斤紝鍥犳錛屼笉鍙伩鍏嶇殑娑夊強鍒伴〉闈㈠垎鍓查棶棰橈紝寮曞叆涓枃鏄劇ず鍚庯紝榪欓噷紼嶅井鏈夌偣涓嶅悓錛岃娉ㄦ剰涓嶈兘鎷嗗垎涓涓眽瀛楋紝
褰撶劧錛岃繕鏈夊叾浠栫粏鑺傞渶瑕佸鐞嗭紝榪欓噷涓嶅璇翠簡銆?br>

鐩綍涓枃闂

  蹇呴』鎵胯錛岃繖鏄垜閬囧埌鐨勬渶鐥涜嫤鐨勯棶棰樹簡錛屽師鍥犳槸浠嶢PI涓婂氨鏈夐棶棰樹簡錛岃鍙栧嚭鏉ョ殑鐩綍鍚嶅眳鐒舵槸Shift-jis緙栫爜鐨勶紝璋佽PSP鏄儲灝間駭鐨勫憿錛屾垜灝濊瘯榪囧皢PSP鐨勮璦璁劇疆銆佹椂闂寸瓑鏈湴鍖栬緗敼鎴愪腑鏂囥佷腑鍥界瓑銆?br>鍙戠幇璇誨彇鍒扮殑鐩綍鍚嶈繕鏄痵hift-jis緙栫爜銆傛垜鍏堝皢鐩綍鍚嶄粠shift-jis杞洖gb2312錛岀劧鍚庢樉紺猴紝緇撴灉鍙戠幇寰堝姹夊瓧涓㈠け錛屽洜涓轟粠gb2312杞埌shift-jis鐨勬椂鍊欏凡緇忓け鐪熶簡錛岃漿鍥炴潵鏄劇ず寰堝瀛椾綋灝辨樉紺轟笉浜嗕簡銆?br>鐪嬩笂鍘昏繖涓棶棰樻棤娉曡В鍐充簡錛屽叾瀹炰笉鐒訛紝PSP鐨凙PI鎻愪緵浜嗘墦寮璁板繂鍗¤澶囩殑鍔熻兘錛岃繖鏍鳳紝鎴戜滑鑷繁鍋氫竴涓狥AT32椹卞姩錛堝彨椹卞姩涓嶅悎閫傦紝鍏跺疄灝辨槸鑷繁璇誨彇FAT32鏂囦歡緋葷粺綆$悊鏂囦歡錛夊氨鍙互浜嗭紝FAT32鐨勬枃妗?br>鍒板閮芥槸錛宭inux涓嬩篃鏈塿fat鏂囦歡緋葷粺鐨勫疄鐜幫紝涓嶈繃鎴戝伔鎳掍簡錛屾垜鐩存帴浠嶱MP Player鐨勪唬鐮侀噷鎷瘋礉浜咶AT32鐩稿叧鏂囦歡錛岀洿鎺ョЩ妞嶈繃鏉ワ紝淇敼浜咶zScreenPsp.cpp鏂囦歡閲岀洰褰曠浉鍏崇殑鐩綍璇誨彇鍑芥暟錛?br>鐒跺悗淇敼鐩綍鐩稿叧鏄劇ず浠g爜鍚庯紝緙栫爜鏄劇ず錛屼竴鍒囩粓浜庤В鍐充簡銆傘傘?br>
 




feixuwu 2010-07-26 21:41 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品美女久久| 久久精品国产精品亚洲精品| 欧美极品在线观看| 欧美尤物巨大精品爽| 久久9热精品视频| 一本久久综合亚洲鲁鲁| 欧美夜福利tv在线| 日韩一级免费| 久久躁日日躁aaaaxxxx| 亚洲无线观看| 欧美激情一区二区三区蜜桃视频| 亚洲午夜av在线| 免费高清在线视频一区·| 中文在线资源观看网站视频免费不卡| 一区二区三区色| 99国产精品一区| 久久免费国产| 麻豆av一区二区三区久久| 国产精品久久久久久久第一福利 | 欧美波霸影院| 久久国产精品一区二区三区| 欧美日韩国产综合在线| 欧美搞黄网站| 日韩视频在线观看一区二区| 免费久久99精品国产自| 久久亚洲精选| 91久久视频| 欧美日韩精品欧美日韩精品一 | 久久人人爽国产| 欧美成人一区二区| 亚洲电影av| 欧美精品国产精品日韩精品| 亚洲黄色免费网站| 最新亚洲电影| 欧美日韩亚洲91| 亚洲欧美视频一区二区三区| 久久久久久久久久久久久久一区 | 欧美激情91| 一本一道久久综合狠狠老精东影业 | 99视频精品在线| 国产精品久久久久aaaa樱花| 亚洲网站在线| 久久一区二区精品| 9色精品在线| 国产日韩一区二区| 欧美国产成人精品| 欧美一区视频| 洋洋av久久久久久久一区| 久久在线播放| 香蕉久久一区二区不卡无毒影院 | 国产精品入口尤物| 欧美伊人久久久久久久久影院| 国产精品天美传媒入口| 狂野欧美激情性xxxx| 亚洲欧美精品一区| aa级大片欧美| 日韩午夜视频在线观看| 欧美成人午夜激情在线| 久久久久**毛片大全| 性欧美xxxx视频在线观看| 中国亚洲黄色| 夜夜夜久久久| 亚洲午夜免费视频| 中文久久精品| 中国女人久久久| 亚洲网站在线观看| 国产精品99久久久久久宅男| 一区二区三区精密机械公司 | 欧美中文在线字幕| 亚洲欧美综合国产精品一区| 亚洲影院色无极综合| 亚洲视频视频在线| 欧美伊人久久大香线蕉综合69| 午夜视频在线观看一区二区| 亚洲欧美在线x视频| 午夜精品在线视频| 免费成人高清视频| 91久久精品国产91性色| 亚洲精品无人区| 欧美在线二区| 欧美日韩大片| 国产丝袜美腿一区二区三区| 亚洲第一精品在线| 亚洲一二三区精品| 免费欧美高清视频| 亚洲男女自偷自拍| 欧美高清不卡在线| 国产热re99久久6国产精品| 在线免费观看视频一区| 欧美精品免费在线| 国产精品久久久久久久午夜| 国产日韩欧美日韩| 亚洲欧美日韩精品久久| 欧美激情欧美狂野欧美精品| 亚洲伊人色欲综合网| 欧美激情综合五月色丁香| 狠狠色丁香久久综合频道| 亚洲性夜色噜噜噜7777| 亚洲日韩成人| 欧美1区2区视频| 亚洲人成人一区二区三区| 久久免费视频网站| 久久精品免费| 影音先锋久久| 欧美黑人在线观看| 欧美激情视频一区二区三区免费 | 国产日韩一区二区三区在线播放| 亚洲免费播放| 一区二区三欧美| 国产美女精品视频免费观看| 午夜久久美女| 香港成人在线视频| 伊人男人综合视频网| 免费在线观看日韩欧美| 欧美成人中文字幕| 中文在线不卡| 久久久久综合一区二区三区| 亚洲人成网站影音先锋播放| 亚洲国产精品久久久久| 国产精品久久久91| 免费高清在线视频一区·| 欧美精品七区| 久久久久久自在自线| 欧美激情第五页| 久久乐国产精品| 欧美三级不卡| 欧美成人在线网站| 国产精品永久免费| 亚洲精品欧美日韩专区| 国产一区二区主播在线| 亚洲精品一区二区三区不| 激情欧美一区二区三区在线观看| 91久久久久| 久久国产欧美日韩精品| 中文欧美日韩| 欧美大片在线看| 欧美韩国一区| 亚洲精品激情| 鲁大师成人一区二区三区| 久久精品视频免费播放| 国产精品三级久久久久久电影| 日韩视频一区二区在线观看| 亚洲精品免费看| 欧美成人免费网站| 欧美成年网站| 亚洲国产一区二区a毛片| 久久久久九九视频| 免费永久网站黄欧美| 亚洲国产电影| 欧美日韩久久| 亚洲一区欧美激情| 久久精品一区中文字幕| 精品成人一区二区| 欧美成人国产| 亚洲一区二区三区在线播放| 亚洲欧美日韩综合国产aⅴ| 国产精品手机视频| 美女主播视频一区| av成人手机在线| 久久人人爽人人爽爽久久| 亚洲人成人一区二区三区| 欧美三日本三级少妇三99| 欧美一区二区视频在线观看2020| 久久只有精品| 亚洲欧美综合| 一本色道久久综合亚洲精品婷婷 | 欧美一区二区| 亚洲人成亚洲人成在线观看图片 | 亚洲欧美一区二区三区久久| 国产综合一区二区| 欧美三级电影精品| 久久综合亚州| 久久精品一本久久99精品| 一本色道久久88综合亚洲精品ⅰ | 亚洲精品视频一区二区三区| 亚洲一区二区动漫| 亚洲国内欧美| 亚洲国产欧美一区二区三区久久| 欧美亚洲综合网| 亚洲综合色激情五月| 99国产精品99久久久久久| 亚洲国产精品悠悠久久琪琪| 国产视频亚洲| 激情综合网址| 在线不卡视频| 亚洲精品小视频在线观看| 激情综合在线| 亚洲精品久久久久久下一站 | 亚洲美女尤物影院| 亚洲免费观看在线观看| 亚洲视频一区在线观看| 亚洲天堂av在线免费| 一本色道久久88精品综合| 一区二区日韩| 久久精品国产免费看久久精品| 久久手机精品视频| 欧美日韩在线播放| 精品动漫一区| 亚洲影院免费观看| 美女国内精品自产拍在线播放|