锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人体影院,香蕉久久夜色精品国产使用方法,久久成人免费网http://m.shnenglu.com/true/category/3902.htmlzh-cnMon, 09 Jul 2012 22:26:49 GMTMon, 09 Jul 2012 22:26:49 GMT60linux甯哥敤鍛戒護鎼滈泦http://m.shnenglu.com/true/archive/2012/07/09/182263.htmltruetrueSun, 08 Jul 2012 18:07:00 GMThttp://m.shnenglu.com/true/archive/2012/07/09/182263.htmlhttp://m.shnenglu.com/true/comments/182263.htmlhttp://m.shnenglu.com/true/archive/2012/07/09/182263.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/182263.htmlhttp://m.shnenglu.com/true/services/trackbacks/182263.html1.awk浣跨敤
http://sunting.blog.51cto.com/1244382/281472
http://brantc.blog.51cto.com/410705/199901
http://www.cnblogs.com/zhanglanyun/archive/2011/10/02/2198015.html

2.sort
http://www.cnblogs.com/kumuspring/archive/2011/07/17/2149237.html


true 2012-07-09 02:07 鍙戣〃璇勮
]]>
緇橺Thread鎻愪緵涓涓猵atchhttp://m.shnenglu.com/true/archive/2011/05/29/147632.htmltruetrueSun, 29 May 2011 09:44:00 GMThttp://m.shnenglu.com/true/archive/2011/05/29/147632.htmlhttp://m.shnenglu.com/true/comments/147632.htmlhttp://m.shnenglu.com/true/archive/2011/05/29/147632.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/147632.htmlhttp://m.shnenglu.com/true/services/trackbacks/147632.htmlhttp://zthread.sourceforge.net/  
 榪欎釜搴撹璁$殑寰堝皬宸э紝浼橀泤錛岀鍚堟垜涓漢鐨勫緹庤錛宭inux涓嬮氳繃緙栬瘧鏃朵細鍑虹幇閿欒錛屼富瑕佹槸鐢變簬gcc鐨勮佽娉曟墍鑷達紝鐢變簬搴撶殑浣滆?005騫村仠姝簡鏇存柊錛屾墍浠ヨ繖涓鍧椾竴鐩存病鏀癸紝榪欓噷鎻愪緵涓涓猵atch錛屽叾瀹炲緢綆鍗曪紝灝辨槸鏇挎崲浜嗕笅鍑犱釜璇彞錛屽唴瀹逛負錛?span class="Apple-style-span" style="font-size: 13px; ">     
#(0) put this file under top ZThread directory,such as ZThread-2.3.2/,and
#(
1) cd ZThread-2.3.2
#(
2) ./zthread-patch.sh  (chmod +x zthread-patch.sh if necessary)
#(
3) ./configure
#(
4) make

sed 
-'/if(!isDisabled())/s/^.*/    if(!this->isDisabled())/' ./include/zthread/Guard.h
sed 
-'/waiterArrived(self)/s/^.*/      this->waiterArrived(self);/' ./src/MutexImpl.h
sed 
-'/waiterDeparted(self)/s/^.*/      this->waiterDeparted(self);/' ./src/MutexImpl.h
sed 
-'/ownerAcquired(self)/s/^.*/      this->ownerAcquired(self);/' ./src/MutexImpl.h
sed 
-'/ownerReleased(impl)/s/^.*/      this->ownerReleased(impl);/' ./src/MutexImpl.h


true 2011-05-29 17:44 鍙戣〃璇勮
]]>
tcpdump鐨勫父鐢ㄦ柟寮?/title><link>http://m.shnenglu.com/true/archive/2011/05/25/147104.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Wed, 25 May 2011 10:53:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2011/05/25/147104.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/147104.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2011/05/25/147104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/147104.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/147104.html</trackback:ping><description><![CDATA[<p>1.sudo /usr/sbin/tcpdump -i eth1 -n port 7999</p> <p>2.sudo /usr/sbin/tcpdump -i any -X -n -s0 port 7999</p> <p>3.sudo /usr/sbin/tcpdump -i any -X -n -s0 dst port  7999 and ip[39]==0 and ip[40]==2<br />鏈鍚庣殑 ip[39]==0 and ip[40]==0鏄繃婊ゆ潯浠訛紝鍚箟涓猴紝浠巌p澶村紑濮嬬畻璧風殑絎?9涓瓧鑺備負鍗佽繘鍒?錛岀40涓瓧鑺備負鍗佽繘鍒?</p><img src ="http://m.shnenglu.com/true/aggbug/147104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2011-05-25 18:53 <a href="http://m.shnenglu.com/true/archive/2011/05/25/147104.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++瀹炵幇鐨凪D5綆楁硶http://m.shnenglu.com/true/archive/2010/09/04/125888.htmltruetrueSat, 04 Sep 2010 12:03:00 GMThttp://m.shnenglu.com/true/archive/2010/09/04/125888.htmlhttp://m.shnenglu.com/true/comments/125888.htmlhttp://m.shnenglu.com/true/archive/2010/09/04/125888.html#Feedback1http://m.shnenglu.com/true/comments/commentRss/125888.htmlhttp://m.shnenglu.com/true/services/trackbacks/125888.htmlhttp://m.shnenglu.com/Files/true/md5lib.rar
         浣跨敤璇存槑錛?br>         錛?錛夋簮浠g爜涓昏鎻愪緵浜哅D5綾伙紝鍦ㄧ被涔嬪鎻愪緵浜嗕袱涓嚱鏁幫細
                              std::string getMD5(std::ifstream& stream);//榪欎釜鏄枃浠舵帴鍙o紝璁$畻鏂囦歡鍐呭鐨凪D5
                              std::string getMD5(const char* str,unsigned int str_len);//榪欎釜灝變笉鐢ㄨ浜?br>鎯崇爺絀朵唬鐮佺殑璇濓紝鍙傝僊D5綾葷殑瀹炵幇錛屽鏋滃彧鏄敤鐨勮瘽錛屽彧闇浼氱敤涓婇潰鐨勬帴鍙e嵆鍙?br>         錛?錛塻td::string getMD5(const char* str,unsigned int str_len)鐨勪嬌鐢細
                                    string sName = "MD5";
                                    string sMD5  = getMD5(sName.c_str(),sName.length());
姝ゆ椂sMD5鐨勫間負錛?f138a09169b250e9dcb378140907378
         錛?錛塻td::string getMD5(std::ifstream& stream)鐨勪嬌鐢細鍒涘緩md5.txt錛屽唴瀹逛負錛歁D5
                                    ifstream file("md5.txt");
                                    string sMD5File = getMD5(file);
sMD5File 鐨勪篃鏄細7f138a09169b250e9dcb378140907378
         錛?錛塴inux涓嬫彁渚沵d5sum,灝嗕笂闈㈢殑md5.txt浼犲埌linux涓嬶紝鐒跺悗錛歮d5sum md5.txt錛岀粨鏋滃拰涓婇潰涓鏍楓傛敞鎰忥紝涓瀹氳紜md5.txt鍐呭涓?涓瓧鑺傦紝濡傛灉鐩存帴鐧誨綍涓妉inux錛岀敤vi鍒涘緩md5.txt錛岀劧鍚庤緭鍏?#8220;MD5”錛屾渶鍚庝繚瀛橈紝榪欑鏂瑰紡linux涓嬩細榪藉姞涓涓┖琛岋紝瀵艱嚧MD5鍊間笉涓鑷淬?br>         錛?錛夊畨鍏ㄦ剰璇嗚鏍戠珛錛岃繖涓綉绔?a >http://www.cmd5.com/浠ョ綉欏靛艦寮忔彁渚沵d5瑙e瘑錛屽皢涓婇潰鐨?f138a09169b250e9dcb378140907378鐨勮緭鍏ワ紝鍑犵鏃墮棿錛屽緱鍒癕D5

true 2010-09-04 20:03 鍙戣〃璇勮
]]>
OCCI鍦╨inux涓婄殑緙栬瘧璀﹀憡http://m.shnenglu.com/true/archive/2009/03/19/77181.htmltruetrueThu, 19 Mar 2009 06:06:00 GMThttp://m.shnenglu.com/true/archive/2009/03/19/77181.htmlhttp://m.shnenglu.com/true/comments/77181.htmlhttp://m.shnenglu.com/true/archive/2009/03/19/77181.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/77181.htmlhttp://m.shnenglu.com/true/services/trackbacks/77181.html   makefile鐨勯儴鍒嗚緭鍑猴細
gcc -o ./testocci test.o -lpthread -lstdc++ -ldl -L/export/home/oracle/instantclient_10_2 -locci -lclntsh
/usr/bin/ld: warning: libstdc++.so.5, needed by /export/home/oracle/instantclient_10_2/libocci.so, may conflict with libstdc++.so.6

  灝唌akefile鏀逛負錛?br>gcc -o ./testocci test.o -lpthread -lstdc++ -ldl -L/export/home/oracle/instantclient_10_2 -locci -lclntsh  /usr/lib/libstdc++.so.5
璀﹀憡娑堝け



true 2009-03-19 14:06 鍙戣〃璇勮
]]>
淇敼鍐呮牳鐨勯儴鍒嗗弬鏁?/title><link>http://m.shnenglu.com/true/archive/2009/02/04/72951.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Wed, 04 Feb 2009 01:30:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2009/02/04/72951.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/72951.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2009/02/04/72951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/72951.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/72951.html</trackback:ping><description><![CDATA[         鍦?proc/sys/kernel鐩綍涓嬶紝鍙互淇敼娑堟伅闃熷垪鐨勫弬鏁癿sgmax,msgmnb,msgmni,榪樻湁濡傜粓绔樉紺虹殑hostname絳?鍦╫s閲嶅惎鍔ㄦ椂錛屾墍鏈夌殑鍙傛暟灝變細鎭㈠鍒伴粯璁ゅ鹼紝濡傛灉鎯沖湪緋葷粺閲嶅惎鍚庯紝淇敼渚濈劧鏈夋晥錛屽垯鍙互淇敼/etc/sysctl.conf鏂囦歡錛屼互淇敼hostname涓轟緥錛?br>         echo "kernel.hostname=VMware"  >>/etc/sysctl.conf<br>         /sbin/sysctl -p <br>         <img src ="http://m.shnenglu.com/true/aggbug/72951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2009-02-04 09:30 <a href="http://m.shnenglu.com/true/archive/2009/02/04/72951.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍩虹搴撶殑閿欒淇℃伅搴旇濡備綍澶勭悊http://m.shnenglu.com/true/archive/2009/02/02/72811.htmltruetrueMon, 02 Feb 2009 08:42:00 GMThttp://m.shnenglu.com/true/archive/2009/02/02/72811.htmlhttp://m.shnenglu.com/true/comments/72811.htmlhttp://m.shnenglu.com/true/archive/2009/02/02/72811.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/72811.htmlhttp://m.shnenglu.com/true/services/trackbacks/72811.html闃呰鍏ㄦ枃

true 2009-02-02 16:42 鍙戣〃璇勮
]]>
瀵瑰熀鏈被鍨嬬殑鍐嶅寘瑁咃紝鏂逛究浜嗙Щ妞?/title><link>http://m.shnenglu.com/true/archive/2009/02/02/72782.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Mon, 02 Feb 2009 02:51:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2009/02/02/72782.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/72782.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2009/02/02/72782.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/72782.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/72782.html</trackback:ping><description><![CDATA[     鎽樿: 瀵瑰熀鏈被鍨嬬殑鍐嶅寘瑁?nbsp; <a href='http://m.shnenglu.com/true/archive/2009/02/02/72782.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/true/aggbug/72782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2009-02-02 10:51 <a href="http://m.shnenglu.com/true/archive/2009/02/02/72782.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鑷繁閫犵殑涓涓嚎紼嬬被http://m.shnenglu.com/true/archive/2009/01/19/72306.htmltruetrueMon, 19 Jan 2009 04:54:00 GMThttp://m.shnenglu.com/true/archive/2009/01/19/72306.htmlhttp://m.shnenglu.com/true/comments/72306.htmlhttp://m.shnenglu.com/true/archive/2009/01/19/72306.html#Feedback12http://m.shnenglu.com/true/comments/commentRss/72306.htmlhttp://m.shnenglu.com/true/services/trackbacks/72306.html闃呰鍏ㄦ枃

true 2009-01-19 12:54 鍙戣〃璇勮
]]>
linux涓嬩俊鍙峰鐞嗗嚱鏁板疄鐜扮殑涓鐐圭悊瑙?/title><link>http://m.shnenglu.com/true/archive/2009/01/15/72072.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Thu, 15 Jan 2009 03:39:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2009/01/15/72072.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/72072.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2009/01/15/72072.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/72072.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/72072.html</trackback:ping><description><![CDATA[<p>浠g爜鎿嶄綔姝ラ濡備笅錛?br><br>[tqg@localhost test]$ vi test.cpp </p> <p><br>#include <pthread.h><br>#include <signal.h><br>#include <stdio.h><br>#include <unistd.h></p> <p>void signal_handler(int sig)<br>{<br>        printf("catch signal: %d,thread id = %u\n",sig,pthread_self());<br>        pthread_exit(0);<br>}</p> <p>void* thread_handler(void*arg)<br>{<br>        signal(SIGQUIT,signal_handler);</p> <p>        printf("thread arg = %s\n",(char*)arg);</p> <p>        sleep(10);<br>        printf("in thread\n");</p> <p>        return (void*)0;<br>} </p> <p>int main()<br>{<br>        char* pArg = "hello";<br>        pthread_t tid;<br>        pthread_create(&tid,NULL,thread_handler,pArg);</p> <p>        printf("main thread id = %u\n",pthread_self());<br>        sleep(2);</p> <p>        printf("killing now\n");<br>        pthread_kill(tid,SIGQUIT);</p> <p>        sleep(20);</p> <p>        printf("exit main now\n");</p> <p>        return 0;<br>}<br>~<br>~<br>~<br>~<br>"test.cpp" 42L, 648C written<br>[tqg@localhost test]$ g++ -o test test.cpp -lpthread<br>[tqg@localhost test]$ ./test <br>main thread id = 3086875296<br>thread arg = hello<br>killing now<br>catch signal: 3,thread id = 3086871472<br>exit main now<br>[tqg@localhost test]$ <br><br>鍙互鐪嬪嚭錛屼俊鍙峰鐞嗗嚱鏁扮殑鎵ц鏄湪瑕佹崟鑾蜂俊鍙風殑瀛愮嚎紼媡hread_handler鐨勪笂涓嬫枃涓墽琛岀殑銆?/p> <img src ="http://m.shnenglu.com/true/aggbug/72072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2009-01-15 11:39 <a href="http://m.shnenglu.com/true/archive/2009/01/15/72072.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢℅DB璋冭瘯紼嬪簭---杞創錛岄潪甯稿叏闈㈢殑璋冭瘯鎶宸?/title><link>http://m.shnenglu.com/true/archive/2009/01/11/71749.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sun, 11 Jan 2009 12:21:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2009/01/11/71749.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/71749.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2009/01/11/71749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/71749.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/71749.html</trackback:ping><description><![CDATA[鐢℅DB璋冭瘯紼嬪簭 <br>GDB鏄竴涓己澶х殑鍛戒護琛岃皟璇曞伐鍏楓傚ぇ瀹剁煡閬撳懡浠よ鐨勫己澶у氨鏄湪浜庯紝鍏跺彲浠ュ艦鎴愭墽琛屽簭<br>鍒楋紝褰㈡垚鑴氭湰銆俇NIX涓嬬殑杞歡鍏ㄦ槸鍛戒護琛岀殑錛岃繖緇欑▼搴忓紑鍙戞彁浠d緵浜嗘瀬澶х殑渚垮埄錛屽懡浠よ<br>杞歡鐨勪紭鍔垮湪浜庯紝瀹冧滑鍙互闈炲父瀹規槗鐨勯泦鎴愬湪涓璧鳳紝浣跨敤鍑犱釜綆鍗曠殑宸叉湁宸ュ叿鐨勫懡浠わ紝灝卞彲<br>浠ュ仛鍑轟竴涓潪甯稿己澶х殑鍔熻兘銆?<br>浜庢槸UNIX涓嬬殑杞歡姣擶indows涓嬬殑杞歡鏇磋兘鏈夋満鍦扮粨鍚堬紝鍚勮嚜鍙戞尌鍚勮嚜鐨勯暱澶勶紝緇勫悎鎴?br>鏇翠負寮哄姴鐨勫姛鑳姐傝學indows涓嬬殑鍥懼艦杞歡鍩烘湰涓婃槸鍚勮嚜涓鴻惀錛屼簰鐩鎬笉鑳借皟鐢紝寰堜笉鍒╀簬<br>鍚勭杞歡鐨勭浉浜掗泦鎴愩傚湪榪欓噷騫朵笉鏄鍜學indows鍋氫釜浠涔堟瘮杈冿紝鎵璋?#8220;瀵告湁鎵闀匡紝灝烘湁<br>鎵鐭?#8221;錛屽浘褰㈠寲宸ュ叿榪樻槸鏈変笉濡傚懡浠よ鐨勫湴鏂廣?<br>鐢℅DB璋冭瘯紼嬪簭 <br>GDB姒傝堪 <br>鈥斺斺斺?<br>GDB鏄疓NU寮婧愮粍緇囧彂甯冪殑涓涓己澶х殑UNIX涓嬬殑紼嬪簭璋冭瘯宸ュ叿銆傛垨璁革紝鍚勪綅姣旇緝鍠滄閭?br>縐嶅浘褰㈢晫闈㈡柟寮忕殑錛屽儚VC銆丅CB絳塈DE鐨勮皟璇曪紝浣嗗鏋滀綘鏄湪UNIX騫沖彴涓嬪仛杞歡錛屼綘<br>浼氬彂鐜癎DB榪欎釜璋冭瘯宸ュ叿鏈夋瘮VC銆丅CB鐨勫浘褰㈠寲璋冭瘯鍣ㄦ洿寮哄ぇ鐨勫姛鑳姐傛墍璋?#8220;瀵告湁鎵闀匡紝<br>灝烘湁鎵鐭?#8221;灝辨槸榪欎釜閬撶悊銆?<br>涓鑸潵璇達紝GDB涓昏甯繖浣犲畬鎴愪笅闈㈠洓涓柟闈㈢殑鍔熻兘錛?<br>1銆佸惎鍔ㄤ綘鐨勭▼搴忥紝鍙互鎸夌収浣犵殑鑷畾涔夌殑瑕佹眰闅忓績鎵嬈茬殑榪愯紼嬪簭銆?<br>2銆佸彲璁╄璋冭瘯鐨勭▼搴忓湪浣犳墍鎸囧畾鐨勮皟緗殑鏂偣澶勫仠浣忋傦紙鏂偣鍙互鏄潯浠惰〃杈懼紡錛?<br>3銆佸綋紼嬪簭琚仠浣忔椂錛屽彲浠ユ鏌ユ鏃朵綘鐨勭▼搴忎腑鎵鍙戠敓鐨勪簨銆?<br>4銆佸姩鎬佺殑鏀瑰彉浣犵▼搴忕殑鎵ц鐜銆?<br>浠庝笂闈㈢湅鏉ワ紝GDB鍜屼竴鑸殑璋冭瘯宸ュ叿娌℃湁浠涔堜袱鏍鳳紝鍩烘湰涓婁篃鏄畬鎴愯繖浜涘姛鑳斤紝涓嶈繃鍦ㄧ粏<br>鑺備笂錛屼綘浼氬彂鐜癎DB榪欎釜璋冭瘯宸ュ叿鐨勫己澶э紝澶у鍙兘姣旇緝涔犳儻浜嗗浘褰㈠寲鐨勮皟璇曞伐鍏鳳紝浣嗘湁<br>鏃跺欙紝鍛戒護琛岀殑璋冭瘯宸ュ叿鍗存湁鐫鍥懼艦鍖栧伐鍏鋒墍涓嶈兘瀹屾垚鐨勫姛鑳姐傝鎴戜滑涓涓鐪嬫潵銆?<br>涓涓皟璇曠ず渚?<br>鈥斺斺斺斺斺?<br>婧愮▼搴忥細tst.c <br>1 #include <br>2 <br>3 int func(int n) <br>4 { <br>5 int sum=0,i; <br>6 for(i=0; i<7; i++) { <p>8 sum+=i; <br>9 } <br>10 return sum; <br>11 } <br>12 <br>13 <br>14 main() <br>15 { <br>16 int i; <br>17 long result = 0; <br>18 for(i=1; i<=100; i++) <br>19 { <br>20 result += i; <br>21 } <br>22 <br>23 printf("result[1-100] = %d \n", result ); <br>24 printf("result[1-250] = %d \n", func(250) ); <br>25 } <br>緙栬瘧鐢熸垚鎵ц鏂囦歡錛氾紙Linux涓嬶級 <br>hchen/test> cc -g tst.c -o tst <br>浣跨敤GDB璋冭瘯錛?<br>hchen/test> gdb tst <---------- 鍚姩GDB <br>GNU gdb 5.1.1 <br>Copyright 2002 Free Software Foundation, Inc. <br>GDB is free software, covered by the GNU General Public License, and you are <br>welcome to change it and/or distribute copies of it under certain conditions. <br>Type "show copying" to see the conditions. <br>There is absolutely no warranty for GDB. Type "show warranty" for details. <br>This GDB was configured as "i386-suse-linux"... <br>(gdb) l <-------------------- l鍛戒護鐩稿綋浜巐ist錛屼粠絎竴琛屽紑濮嬩緥鍑哄師鐮併?<br>1 #include <br>2 <br>3 int func(int n) <br>4 { <br>5 int sum=0,i; <br>6 for(i=0; i 7 { <br>8 sum+=i; <br>9 } <br>10 return sum; <br>(gdb) <-------------------- 鐩存帴鍥炶濺琛ㄧず錛岄噸澶嶄笂涓嬈″懡浠?<br>11 } </p> <p>12 <br>13 <br>14 main() <br>15 { <br>16 int i; <br>17 long result = 0; <br>18 for(i=1; i<=100; i++) <br>19 { <br>20 result += i; <br>(gdb) break 16 <-------------------- 璁劇疆鏂偣錛屽湪婧愮▼搴忕16琛屽銆?<br>Breakpoint 1 at 0x8048496: file tst.c, line 16. <br>(gdb) break func <-------------------- 璁劇疆鏂偣錛屽湪鍑芥暟func()鍏ュ彛澶勩?<br>Breakpoint 2 at 0x8048456: file tst.c, line 5. <br>(gdb) info break <-------------------- 鏌ョ湅鏂偣淇℃伅銆?<br>Num Type Disp Enb Address What <br>1 breakpoint keep y 0x08048496 in main at tst.c:16 <br>2 breakpoint keep y 0x08048456 in func at tst.c:5 <br>(gdb) r <--------------------- 榪愯紼嬪簭錛宺un鍛戒護綆鍐?<br>Starting program: /home/hchen/test/tst <br>Breakpoint 1, main () at tst.c:17 <---------- 鍦ㄦ柇鐐瑰鍋滀綇銆?<br>17 long result = 0; <br>(gdb) n <--------------------- 鍗曟潯璇彞鎵ц錛宯ext鍛戒護綆鍐欍?<br>18 for(i=1; i<=100; i++) <br>(gdb) n <br>20 result += i; <br>(gdb) n <br>18 for(i=1; i<=100; i++) <br>(gdb) n <br>20 result += i; <br>(gdb) c <--------------------- 緇х畫榪愯紼嬪簭錛宑ontinue鍛戒護綆鍐欍?<br>Continuing. <br>result[1-100] = 5050 <----------紼嬪簭杈撳嚭銆?<br>Breakpoint 2, func (n=250) at tst.c:5 <br>5 int sum=0,i; <br>(gdb) n <br>6 for(i=1; i<=n; i++) <br>(gdb) p i <--------------------- 鎵撳嵃鍙橀噺i鐨勫鹼紝print鍛戒護綆鍐欍?<br>$1 = 134513808 <br>(gdb) n <br>8 sum+=i; <br>(gdb) n <br>6 for(i=1; i<=n; i++) </p> <p>(gdb) p sum <br>$2 = 1 <br>(gdb) n <br>8 sum+=i; <br>(gdb) p i <br>$3 = 2 <br>(gdb) n <br>6 for(i=1; i<=n; i++) <br>(gdb) p sum <br>$4 = 3 <br>(gdb) bt <--------------------- 鏌ョ湅鍑芥暟鍫嗘爤銆?<br>#0 func (n=250) at tst.c:5 <br>#1 0x080484e4 in main () at tst.c:24 <br>#2 0x400409ed in __libc_start_main () from /lib/libc.so.6 <br>(gdb) finish <--------------------- 閫鍑哄嚱鏁般?<br>Run till exit from #0 func (n=250) at tst.c:5 <br>0x080484e4 in main () at tst.c:24 <br>24 printf("result[1-250] = %d \n", func(250) ); <br>Value returned is $6 = 31375 <br>(gdb) c <--------------------- 緇х畫榪愯銆?<br>Continuing. <br>result[1-250] = 31375 <----------紼嬪簭杈撳嚭銆?<br>Program exited with code 027. <--------紼嬪簭閫鍑猴紝璋冭瘯緇撴潫銆?<br>(gdb) q <--------------------- 閫鍑篻db銆?<br>hchen/test> <br>濂戒簡錛屾湁浜嗕互涓婄殑鎰熸ц璇嗭紝榪樻槸璁╂垜浠潵緋葷粺鍦拌璇嗕竴涓媑db鍚с?<br>浣跨敤GDB <br>鈥斺斺斺?<br>涓鑸潵璇碐DB涓昏璋冭瘯鐨勬槸C/C++鐨勭▼搴忋傝璋冭瘯C/C++鐨勭▼搴忥紝棣栧厛鍦ㄧ紪璇戞椂錛屾垜浠繀<br>欏昏鎶婅皟璇曚俊鎭姞鍒板彲鎵ц鏂囦歡涓備嬌鐢ㄧ紪璇戝櫒錛坈c/gcc/g++錛夌殑 -g 鍙傛暟鍙互鍋氬埌榪欎竴鐐廣?br>濡傦細 <br>> cc -g hello.c -o hello <br>> g++ -g hello.cpp -o hello <br>濡傛灉娌℃湁-g錛屼綘灝嗙湅涓嶈紼嬪簭鐨勫嚱鏁板悕銆佸彉閲忓悕錛屾墍浠f浛鐨勫叏鏄繍琛屾椂鐨勫唴瀛樺湴鍧銆傚綋浣犵敤<br>-g鎶婅皟璇曚俊鎭姞鍏ヤ箣鍚庯紝騫舵垚鍔熺紪璇戠洰鏍囦唬鐮佷互鍚庯紝璁╂垜浠潵鐪嬬湅濡備綍鐢╣db鏉ヨ皟璇曚粬銆?<br>鍚姩GDB鐨勬柟娉曟湁浠ヤ笅鍑犵錛?</p> <p>1銆乬db <br>program涔熷氨鏄綘鐨勬墽琛屾枃浠訛紝涓鑸湪褰撶劧鐩綍涓嬨?<br>2銆乬db core <br>鐢╣db鍚屾椂璋冭瘯涓涓繍琛岀▼搴忓拰core鏂囦歡錛宑ore鏄▼搴忛潪娉曟墽琛屽悗core dump鍚庝駭鐢熺殑鏂囦歡銆?<br>3銆乬db <br>濡傛灉浣犵殑紼嬪簭鏄竴涓湇鍔$▼搴忥紝閭d箞浣犲彲浠ユ寚瀹氳繖涓湇鍔$▼搴忚繍琛屾椂鐨勮繘紼婭D銆俫db浼氳嚜<br>鍔╝ttach涓婂幓錛屽茍璋冭瘯浠栥俻rogram搴旇鍦≒ATH鐜鍙橀噺涓悳绱㈠緱鍒般?<br>GDB鍚姩鏃訛紝鍙互鍔犱笂涓浜汫DB鐨勫惎鍔ㄥ紑鍏籌紝璇︾粏鐨勫紑鍏沖彲浠ョ敤gdb -help鏌ョ湅銆傛垜鍦ㄤ笅<br>闈㈠彧渚嬩婦涓浜涙瘮杈冨父鐢ㄧ殑鍙傛暟錛?<br>-symbols <br>-s <br>浠庢寚瀹氭枃浠朵腑璇誨彇絎﹀彿琛ㄣ?<br>-se file <br>浠庢寚瀹氭枃浠朵腑璇誨彇絎﹀彿琛ㄤ俊鎭紝騫舵妸浠栫敤鍦ㄥ彲鎵ц鏂囦歡涓?<br>-core <br>-c <br>璋冭瘯鏃禼ore dump鐨刢ore鏂囦歡銆?<br>-directory <br>-d <br>鍔犲叆涓涓簮鏂囦歡鐨勬悳绱㈣礬寰勩傞粯璁ゆ悳绱㈣礬寰勬槸鐜鍙橀噺涓璓ATH鎵瀹氫箟鐨勮礬寰勩?<br>GDB鐨勫懡浠ゆ璨?<br>鈥斺斺斺斺斺斺?<br>鍚姩gdb鍚庯紝灝變綘琚甫鍏db鐨勮皟璇曠幆澧冧腑錛屽氨鍙互浣跨敤gdb鐨勫懡浠ゅ紑濮嬭皟璇曠▼搴忎簡錛実db<br>鐨勫懡浠ゅ彲浠ヤ嬌鐢╤elp鍛戒護鏉ユ煡鐪嬶紝濡備笅鎵紺猴細 <br>/home/hchen> gdb <br>GNU gdb 5.1.1 <br>Copyright 2002 Free Software Foundation, Inc. <br>GDB is free software, covered by the GNU General Public License, and you are <br>welcome to change it and/or distribute copies of it under certain conditions. <br>Type "show copying" to see the conditions. <br>There is absolutely no warranty for GDB. Type "show warranty" for details. <br>This GDB was configured as "i386-suse-linux". <br>(gdb) help </p> <p>List of classes of commands: <br>aliases -- Aliases of other commands <br>breakpoints -- Making program stop at certain points <br>data -- Examining data <br>files -- Specifying and examining files <br>internals -- Maintenance commands <br>obscure -- Obscure features <br>running -- Running the program <br>stack -- Examining the stack <br>status -- Status inquiries <br>support -- Support facilities <br>tracepoints -- Tracing of program execution without stopping the program <br>user-defined -- User-defined commands <br>Type "help" followed by a class name for a list of commands in that class. <br>Type "help" followed by command name for full documentation. <br>Command name abbreviations are allowed if unambiguous. <br>(gdb) <br>gdb鐨勫懡浠ゅ緢澶氾紝gdb鎶婁箣鍒嗘垚璁稿涓綾匯俬elp鍛戒護鍙槸渚嬪嚭gdb鐨勫懡浠ょ綾伙紝濡傛灉瑕佺湅<br>縐嶇被涓殑鍛戒護錛屽彲浠ヤ嬌鐢╤elp 鍛戒護錛屽錛歨elp breakpoints錛屾煡鐪嬭緗柇鐐圭殑鎵鏈夊懡浠ゃ備篃<br>鍙互鐩存帴help 鏉ユ煡鐪嬪懡浠ょ殑甯姪銆?<br>gdb涓紝杈撳叆鍛戒護鏃訛紝鍙互涓嶇敤鎵撳叏鍛戒護錛屽彧鐢ㄦ墦鍛戒護鐨勫墠鍑犱釜瀛楃灝卞彲浠ヤ簡錛屽綋鐒訛紝鍛戒護<br>鐨勫墠鍑犱釜瀛楃搴旇瑕佹爣蹇楃潃涓涓敮涓鐨勫懡浠わ紝鍦↙inux涓嬶紝浣犲彲浠ユ暡鍑諱袱嬈AB閿潵琛ラ綈<br>鍛戒護鐨勫叏縐幫紝濡傛灉鏈夐噸澶嶇殑錛岄偅涔坓db浼氭妸鍏朵緥鍑烘潵銆?<br>紺轟緥涓錛氬湪榪涘叆鍑芥暟func鏃訛紝璁劇疆涓涓柇鐐廣傚彲浠ユ暡鍏reak func錛屾垨鏄洿鎺ュ氨鏄痓 func <br>(gdb) b func <br>Breakpoint 1 at 0x8048458: file hello.c, line 10. <br>紺轟緥浜岋細鏁插叆b鎸変袱嬈AB閿紝浣犱細鐪嬪埌鎵鏈塨鎵撳ご鐨勫懡浠わ細 <br>(gdb) b <br>backtrace break bt <br>(gdb) <br>紺轟緥涓夛細鍙寰楀嚱鏁扮殑鍓嶇紑錛屽彲浠ヨ繖鏍鳳細 <br>(gdb) b make_ <鎸塗AB閿?gt; <br>錛堝啀鎸変笅涓嬈AB閿紝浣犱細鐪嬪埌:錛?<br>make_a_section_from_file make_environ <br>make_abs_section make_function_type <br>make_blockvector make_pointer_type </p> <p>make_cleanup make_reference_type <br>make_command make_symbol_completion_list <br>(gdb) b make_ <br>GDB鎶婃墍鏈塵ake寮澶寸殑鍑芥暟鍏ㄩ儴渚嬪嚭鏉ョ粰浣犳煡鐪嬨?<br>紺轟緥鍥涳細璋冭瘯C++鐨勭▼搴忔椂錛屾湁鍙互鍑芥暟鍚嶄竴鏍楓傚錛?<br>(gdb) b 'bubble( M-? <br>bubble(double,double) bubble(int,int) <br>(gdb) b 'bubble( <br>浣犲彲浠ユ煡鐪嬪埌C++涓殑鎵鏈夌殑閲嶈澆鍑芥暟鍙婂弬鏁般傦紙娉細M-?鍜?#8220;鎸変袱嬈AB閿?#8221;鏄竴涓剰鎬濓級 <br>瑕侀鍑篻db鏃訛紝鍙敤鍙憅uit鎴栧懡浠ょ畝縐皅灝辮浜嗐?<br>GDB涓繍琛孶NIX鐨剆hell紼嬪簭 <br>鈥斺斺斺斺斺斺斺斺斺斺斺?<br>鍦╣db鐜涓紝浣犲彲浠ユ墽琛孶NIX鐨剆hell鐨勫懡浠わ紝浣跨敤gdb鐨剆hell鍛戒護鏉ュ畬鎴愶細 <br>shell <br>璋冪敤UNIX鐨剆hell鏉ユ墽琛岋紝鐜鍙橀噺SHELL涓畾涔夌殑UNIX鐨剆hell灝嗕細琚敤鏉ユ墽琛岋紝濡?br>鏋淪HELL娌℃湁瀹氫箟錛岄偅灝變嬌鐢║NIX鐨勬爣鍑唖hell錛?bin/sh銆傦紙鍦╓indows涓嬌鐢–ommand.com<br>鎴朿md.exe錛?<br>榪樻湁涓涓猤db鍛戒護鏄痬ake錛?<br>make <br>鍙互鍦╣db涓墽琛宮ake鍛戒護鏉ラ噸鏂癰uild鑷繁鐨勭▼搴忋傝繖涓懡浠ょ瓑浠蜂簬“shell make ”銆?<br>鍦℅DB涓繍琛岀▼搴?<br>鈥斺斺斺斺斺斺斺?<br>褰撲互gdb 鏂瑰紡鍚姩gdb鍚庯紝gdb浼氬湪PATH璺緞鍜屽綋鍓嶇洰褰曚腑鎼滅儲鐨勬簮鏂囦歡銆傚瑕佺‘璁db<br>鏄惁璇誨埌婧愭枃浠訛紝鍙嬌鐢╨鎴杔ist鍛戒護錛岀湅鐪媑db鏄惁鑳藉垪鍑烘簮浠g爜銆?<br>鍦╣db涓紝榪愯紼嬪簭浣跨敤r鎴栨槸run鍛戒護銆傜▼搴忕殑榪愯錛屼綘鏈夊彲鑳介渶瑕佽緗笅闈㈠洓鏂歸潰鐨勪簨銆?<br>1銆佺▼搴忚繍琛屽弬鏁般?<br>set args 鍙寚瀹氳繍琛屾椂鍙傛暟銆傦紙濡傦細set args 10 20 30 40 50錛?<br>show args 鍛戒護鍙互鏌ョ湅璁劇疆濂界殑榪愯鍙傛暟銆?<br>2銆佽繍琛岀幆澧冦?<br>path <br>鍙瀹氱▼搴忕殑榪愯璺緞銆?<br>show paths 鏌ョ湅紼嬪簭鐨勮繍琛岃礬寰勩?</p> <p>set environment varname [=value] 璁劇疆鐜鍙橀噺銆傚錛歴et env USER=hchen <br>show environment [varname] 鏌ョ湅鐜鍙橀噺銆?<br>3銆佸伐浣滅洰褰曘?<br>cd <br>鐩稿綋浜巗hell鐨刢d鍛戒護銆?<br>pwd 鏄劇ず褰撳墠鐨勬墍鍦ㄧ洰褰曘?<br>4銆佺▼搴忕殑杈撳叆杈撳嚭銆?<br>info terminal 鏄劇ず浣犵▼搴忕敤鍒扮殑緇堢鐨勬ā寮忋?<br>浣跨敤閲嶅畾鍚戞帶鍒剁▼搴忚緭鍑恒傚錛歳un > outfile <br>tty鍛戒護鍙互鎸囧啓杈撳叆杈撳嚭鐨勭粓绔澶囥傚錛歵ty /dev/ttyb <br>璋冭瘯宸茶繍琛岀殑紼嬪簭 <br>鈥斺斺斺斺斺斺斺?<br>涓ょ鏂規硶錛?<br>1銆佸湪UNIX涓嬬敤ps鏌ョ湅姝e湪榪愯鐨勭▼搴忕殑PID錛堣繘紼婭D錛夛紝鐒跺悗鐢╣db PID鏍煎紡鎸傛帴姝e湪<br>榪愯鐨勭▼搴忋?<br>2銆佸厛鐢╣db 鍏寵仈涓婃簮浠g爜錛屽茍榪涜gdb錛屽湪gdb涓敤attach鍛戒護鏉ユ寕鎺ヨ繘紼嬬殑PID銆傚茍鐢?br>detach鏉ュ彇娑堟寕鎺ョ殑榪涚▼銆?<br>鏆傚仠 / 鎭㈠紼嬪簭榪愯 <br>鈥斺斺斺斺斺斺斺斺?<br>璋冭瘯紼嬪簭涓紝鏆傚仠紼嬪簭榪愯鏄繀欏葷殑錛孏DB鍙互鏂逛究鍦版殏鍋滅▼搴忕殑榪愯銆備綘鍙互璁劇疆紼嬪簭<br>鐨勫湪鍝鍋滀綇錛屽湪浠涔堟潯浠朵笅鍋滀綇錛屽湪鏀跺埌浠涔堜俊鍙鋒椂鍋滃線絳夌瓑銆備互渚夸簬浣犳煡鐪嬭繍琛屾椂鐨勫彉<br>閲忥紝浠ュ強榪愯鏃剁殑嫻佺▼銆?<br>褰撹繘紼嬭gdb鍋滀綇鏃訛紝浣犲彲浠ヤ嬌鐢╥nfo program 鏉ユ煡鐪嬬▼搴忕殑鏄惁鍦ㄨ繍琛岋紝榪涚▼鍙鳳紝琚殏鍋?br>鐨勫師鍥犮?<br>鍦╣db涓紝鎴戜滑鍙互鏈変互涓嬪嚑縐嶆殏鍋滄柟寮忥細鏂偣錛圔reakPoint錛夈佽瀵熺偣錛圵atchPoint錛夈佹崟<br>鎹夌偣錛圕atchPoint錛夈佷俊鍙鳳紙Signals錛夈佺嚎紼嬪仠姝紙Thread Stops錛夈傚鏋滆鎭㈠紼嬪簭榪愯錛屽彲<br>浠ヤ嬌鐢╟鎴栨槸continue鍛戒護銆?<br>涓銆佽緗柇鐐癸紙BreakPoint錛?<br>鎴戜滑鐢╞reak鍛戒護鏉ヨ緗柇鐐廣傛闈㈡湁鍑犵偣璁劇疆鏂偣鐨勬柟娉曪細 <br>break <br>鍦ㄨ繘鍏ユ寚瀹氬嚱鏁版椂鍋滀綇銆侰++涓彲浠ヤ嬌鐢╟lass::function鎴杅unction(type,type)鏍煎紡鏉ユ寚瀹氬嚱</p> <p>鏁板悕銆?<br>break <br>鍦ㄦ寚瀹氳鍙峰仠浣忋?<br>break +offset <br>break -offset <br>鍦ㄥ綋鍓嶈鍙風殑鍓嶉潰鎴栧悗闈㈢殑offset琛屽仠浣忋俹ffiset涓鴻嚜鐒舵暟銆?<br>break filename:linenum <br>鍦ㄦ簮鏂囦歡filename鐨刲inenum琛屽鍋滀綇銆?<br>break filename:function <br>鍦ㄦ簮鏂囦歡filename鐨刦unction鍑芥暟鐨勫叆鍙e鍋滀綇銆?<br>break *address <br>鍦ㄧ▼搴忚繍琛岀殑鍐呭瓨鍦板潃澶勫仠浣忋?<br>break <br>break鍛戒護娌℃湁鍙傛暟鏃訛紝琛ㄧず鍦ㄤ笅涓鏉℃寚浠ゅ鍋滀綇銆?<br>break ... if <br>...鍙互鏄笂榪扮殑鍙傛暟錛宑ondition琛ㄧず鏉′歡錛屽湪鏉′歡鎴愮珛鏃跺仠浣忋傛瘮濡傚湪寰幆澧冧綋涓紝鍙互璁?br>緗産reak if i=100錛岃〃紺哄綋i涓?00鏃跺仠浣忕▼搴忋?<br>鏌ョ湅鏂偣鏃訛紝鍙嬌鐢╥nfo鍛戒護錛屽涓嬫墍紺猴細錛堟敞錛歯琛ㄧず鏂偣鍙鳳級 <br>info breakpoints [n] <br>info break [n] <br>浜屻佽緗瀵熺偣錛圵atchPoint錛?<br>瑙傚療鐐逛竴鑸潵瑙傚療鏌愪釜琛ㄨ揪寮忥紙鍙橀噺涔熸槸涓縐嶈〃杈懼紡錛夌殑鍊兼槸鍚︽湁鍙樺寲浜嗭紝濡傛灉鏈夊彉鍖栵紝椹?br>涓婂仠浣忕▼搴忋傛垜浠湁涓嬮潰鐨勫嚑縐嶆柟娉曟潵璁劇疆瑙傚療鐐癸細 <br>watch <br>涓鴻〃杈懼紡錛堝彉閲忥級expr璁劇疆涓涓瀵熺偣銆備竴閲忚〃杈懼紡鍊兼湁鍙樺寲鏃訛紝椹笂鍋滀綇紼嬪簭銆?<br>rwatch <br>褰撹〃杈懼紡錛堝彉閲忥級expr琚鏃訛紝鍋滀綇紼嬪簭銆?<br>awatch <br>褰撹〃杈懼紡錛堝彉閲忥級鐨勫艱璇繪垨琚啓鏃訛紝鍋滀綇紼嬪簭銆?</p> <p>info watchpoints <br>鍒楀嚭褰撳墠鎵璁劇疆浜嗙殑鎵鏈夎瀵熺偣銆?<br>涓夈佽緗崟鎹夌偣錛圕atchPoint錛?<br>浣犲彲璁劇疆鎹曟崏鐐規潵琛ユ崏紼嬪簭榪愯鏃剁殑涓浜涗簨浠躲傚錛氳澆鍏ュ叡浜簱錛堝姩鎬侀摼鎺ュ簱錛夋垨鏄疌++<br>鐨勫紓甯搞傝緗崟鎹夌偣鐨勬牸寮忎負錛?<br>catch <br>褰揺vent鍙戠敓鏃訛紝鍋滀綇紼嬪簭銆俥vent鍙互鏄笅闈㈢殑鍐呭錛?<br>1銆乼hrow 涓涓狢++鎶涘嚭鐨勫紓甯搞傦紙throw涓哄叧閿瓧錛?<br>2銆乧atch 涓涓狢++鎹曟崏鍒扮殑寮傚父銆傦紙catch涓哄叧閿瓧錛?<br>3銆乪xec 璋冪敤緋葷粺璋冪敤exec鏃躲傦紙exec涓哄叧閿瓧錛岀洰鍓嶆鍔熻兘鍙湪HP-UX涓嬫湁鐢級 <br>4銆乫ork 璋冪敤緋葷粺璋冪敤fork鏃躲傦紙fork涓哄叧閿瓧錛岀洰鍓嶆鍔熻兘鍙湪HP-UX涓嬫湁鐢級 <br>5銆乿fork 璋冪敤緋葷粺璋冪敤vfork鏃躲傦紙vfork涓哄叧閿瓧錛岀洰鍓嶆鍔熻兘鍙湪HP-UX涓嬫湁鐢級 <br>6銆乴oad 鎴?load 杞藉叆鍏變韓搴擄紙鍔ㄦ侀摼鎺ュ簱錛夋椂銆傦紙load涓哄叧閿瓧錛岀洰鍓嶆鍔熻兘鍙湪HP-UX<br>涓嬫湁鐢級 <br>7銆乽nload 鎴?unload 鍗歌澆鍏變韓搴擄紙鍔ㄦ侀摼鎺ュ簱錛夋椂銆傦紙unload涓哄叧閿瓧錛岀洰鍓嶆鍔熻兘鍙湪<br>HP-UX涓嬫湁鐢級 <br>tcatch <br>鍙緗竴嬈℃崟鎹夌偣錛屽綋紼嬪簭鍋滀綇浠ュ悗錛屽簲鐐硅鑷姩鍒犻櫎銆?<br>鍥涖佺淮鎶ゅ仠姝㈢偣 <br>涓婇潰璇翠簡濡備綍璁劇疆紼嬪簭鐨勫仠姝㈢偣錛孏DB涓殑鍋滄鐐逛篃灝辨槸涓婅堪鐨勪笁綾匯傚湪GDB涓紝濡傛灉浣?br>瑙夊緱宸插畾涔夊ソ鐨勫仠姝㈢偣娌℃湁鐢ㄤ簡錛屼綘鍙互浣跨敤delete銆乧lear銆乨isable銆乪nable榪欏嚑涓懡浠ゆ潵<br>榪涜緇存姢銆?<br>clear <br>娓呴櫎鎵鏈夌殑宸插畾涔夌殑鍋滄鐐廣?<br>clear <br>clear <br>娓呴櫎鎵鏈夎緗湪鍑芥暟涓婄殑鍋滄鐐廣?<br>clear <br>clear <br>娓呴櫎鎵鏈夎緗湪鎸囧畾琛屼笂鐨勫仠姝㈢偣銆?<br>delete [breakpoints] [range...] <br>鍒犻櫎鎸囧畾鐨勬柇鐐癸紝breakpoints涓烘柇鐐瑰彿銆傚鏋滀笉鎸囧畾鏂偣鍙鳳紝鍒欒〃紺哄垹闄ゆ墍鏈夌殑鏂偣銆俽ange <br>琛ㄧず鏂偣鍙風殑鑼冨洿錛堝錛?-7錛夈傚叾綆鍐欏懡浠や負d銆?</p> <p>姣斿垹闄ゆ洿濂界殑涓縐嶆柟娉曟槸disable鍋滄鐐癸紝disable浜嗙殑鍋滄鐐癸紝GDB涓嶄細鍒犻櫎錛屽綋浣犺繕闇瑕?br>鏃訛紝enable鍗沖彲錛屽氨濂藉儚鍥炴敹绔欎竴鏍楓?<br>disable [breakpoints] [range...] <br>disable鎵鎸囧畾鐨勫仠姝㈢偣錛宐reakpoints涓哄仠姝㈢偣鍙楓傚鏋滀粈涔堥兘涓嶆寚瀹氾紝琛ㄧずdisable鎵鏈夌殑<br>鍋滄鐐廣傜畝鍐欏懡浠ゆ槸dis. <br>enable [breakpoints] [range...] <br>enable鎵鎸囧畾鐨勫仠姝㈢偣錛宐reakpoints涓哄仠姝㈢偣鍙楓?<br>enable [breakpoints] once range... <br>enable鎵鎸囧畾鐨勫仠姝㈢偣涓嬈★紝褰撶▼搴忓仠姝㈠悗錛岃鍋滄鐐歸┈涓婅GDB鑷姩disable銆?<br>enable [breakpoints] delete range... <br>enable鎵鎸囧畾鐨勫仠姝㈢偣涓嬈★紝褰撶▼搴忓仠姝㈠悗錛岃鍋滄鐐歸┈涓婅GDB鑷姩鍒犻櫎銆?<br>浜斻佸仠姝㈡潯浠剁淮鎶?<br>鍓嶉潰鍦ㄨ鍒拌緗柇鐐規椂錛屾垜浠彁鍒拌繃鍙互璁劇疆涓涓潯浠訛紝褰撴潯浠舵垚绔嬫椂錛岀▼搴忚嚜鍔ㄥ仠姝紝榪?br>鏄竴涓潪甯稿己澶х殑鍔熻兘錛岃繖閲岋紝鎴戞兂涓撻棬璇磋榪欎釜鏉′歡鐨勭浉鍏崇淮鎶ゅ懡浠ゃ備竴鑸潵璇達紝涓烘柇鐐?br>璁劇疆涓涓潯浠訛紝鎴戜滑浣跨敤if鍏抽敭璇嶏紝鍚庨潰璺熷叾鏂偣鏉′歡銆傚茍涓旓紝鏉′歡璁劇疆濂藉悗錛屾垜浠彲浠?br>鐢╟ondition鍛戒護鏉ヤ慨鏀規柇鐐圭殑鏉′歡銆傦紙鍙湁break鍜寃atch鍛戒護鏀寔if錛宑atch鐩墠鏆備笉鏀寔<br>if錛?<br>condition <br>淇敼鏂偣鍙蜂負bnum鐨勫仠姝㈡潯浠朵負expression銆?<br>condition <br>娓呴櫎鏂偣鍙蜂負bnum鐨勫仠姝㈡潯浠躲?<br>榪樻湁涓涓瘮杈冪壒孌婄殑緇存姢鍛戒護ignore錛屼綘鍙互鎸囧畾紼嬪簭榪愯鏃訛紝蹇界暐鍋滄鏉′歡鍑犳銆?<br>ignore <br>琛ㄧず蹇界暐鏂偣鍙蜂負bnum鐨勫仠姝㈡潯浠禼ount嬈°?<br>鍏佷負鍋滄鐐硅瀹氳繍琛屽懡浠?<br>鎴戜滑鍙互浣跨敤GDB鎻愪緵鐨刢ommand鍛戒護鏉ヨ緗仠姝㈢偣鐨勮繍琛屽懡浠ゃ備篃灝辨槸璇達紝褰撹繍琛岀殑<br>紼嬪簭鍦ㄨ鍋滄浣忔椂錛屾垜浠彲浠ヨ鍏惰嚜鍔ㄨ繍琛屼竴浜涘埆鐨勫懡浠わ紝榪欏緢鏈夊埄琛岃嚜鍔ㄥ寲璋冭瘯銆傚鍩轟簬<br>GDB鐨勮嚜鍔ㄥ寲璋冭瘯鏄竴涓己澶х殑鏀寔銆?<br>commands [bnum] </p> <p>... command-list ... <br>end <br>涓烘柇鐐瑰彿bnum鎸囧啓涓涓懡浠ゅ垪琛ㄣ傚綋紼嬪簭琚鏂偣鍋滀綇鏃訛紝gdb浼氫緷嬈¤繍琛屽懡浠ゅ垪琛ㄤ腑鐨?br>鍛戒護銆?<br>渚嬪錛?<br>break foo if x>0 <br>commands <br>printf "x is %d\n",x <br>continue <br>end <br>鏂偣璁劇疆鍦ㄥ嚱鏁癴oo涓紝鏂偣鏉′歡鏄痻>0錛屽鏋滅▼搴忚鏂綇鍚庯紝涔熷氨鏄紝涓鏃鐨勫煎湪foo<br>鍑芥暟涓ぇ浜?錛孏DB浼氳嚜鍔ㄦ墦鍗板嚭x鐨勫鹼紝騫剁戶緇繍琛岀▼搴忋?<br>濡傛灉浣犺娓呴櫎鏂偣涓婄殑鍛戒護搴忓垪錛岄偅涔堝彧瑕佺畝鍗曠殑鎵ц涓涓媍ommands鍛戒護錛屽茍鐩存帴鍦ㄦ墦涓?br>end灝辮浜嗐?<br>涓冦佹柇鐐硅彍鍗?<br>鍦–++涓紝鍙兘浼氶噸澶嶅嚭鐜板悓涓涓悕瀛楃殑鍑芥暟鑻ュ共嬈★紙鍑芥暟閲嶈澆錛夛紝鍦ㄨ繖縐嶆儏鍐典笅錛宐reak 涓?br>鑳藉憡璇塆DB瑕佸仠鍦ㄥ摢涓嚱鏁扮殑鍏ュ彛銆傚綋鐒訛紝浣犲彲浠ヤ嬌鐢╞reak 涔熷氨鏄妸鍑芥暟鐨勫弬鏁扮被鍨嬪憡<br>璇塆DB錛屼互鎸囧畾涓涓嚱鏁般傚惁鍒欑殑璇濓紝GDB浼氱粰浣犲垪鍑轟竴涓柇鐐硅彍鍗曚緵浣犻夋嫨浣犳墍闇瑕佺殑<br>鏂偣銆備綘鍙杈撳叆浣犺彍鍗曞垪琛ㄤ腑鐨勭紪鍙峰氨鍙互浜嗐傚錛?<br>(gdb) b String::after <br>[0] cancel <br>[1] all <br>[2] file:String.cc; line number:867 <br>[3] file:String.cc; line number:860 <br>[4] file:String.cc; line number:875 <br>[5] file:String.cc; line number:853 <br>[6] file:String.cc; line number:846 <br>[7] file:String.cc; line number:735 <br>> 2 4 6 <br>Breakpoint 1 at 0xb26c: file String.cc, line 867. <br>Breakpoint 2 at 0xb344: file String.cc, line 875. <br>Breakpoint 3 at 0xafcc: file String.cc, line 846. <br>Multiple breakpoints were set. <br>Use the "delete" command to delete unwanted <br>breakpoints. <br>(gdb) </p> <p>鍙錛孏DB鍒楀嚭浜嗘墍鏈塧fter鐨勯噸杞藉嚱鏁幫紝浣犲彲浠ラ変竴涓嬪垪琛ㄧ紪鍙峰氨琛屼簡銆?琛ㄧず鏀懼純璁劇疆<br>鏂偣錛?琛ㄧず鎵鏈夊嚱鏁伴兘璁劇疆鏂偣銆?<br>鍏佹仮澶嶇▼搴忚繍琛屽拰鍗曟璋冭瘯 <br>褰撶▼搴忚鍋滀綇浜嗭紝浣犲彲浠ョ敤continue鍛戒護鎭㈠紼嬪簭鐨勮繍琛岀洿鍒扮▼搴忕粨鏉燂紝鎴栦笅涓涓柇鐐瑰埌鏉ャ?br>涔熷彲浠ヤ嬌鐢╯tep鎴杗ext鍛戒護鍗曟璺熻釜紼嬪簭銆?<br>continue [ignore-count] <br>c [ignore-count] <br>fg [ignore-count] <br>鎭㈠紼嬪簭榪愯錛岀洿鍒扮▼搴忕粨鏉燂紝鎴栨槸涓嬩竴涓柇鐐瑰埌鏉ャ俰gnore-count琛ㄧず蹇界暐鍏跺悗鐨勬柇鐐規<br>鏁般俢ontinue錛宑錛宖g涓変釜鍛戒護閮芥槸涓鏍風殑鎰忔濄?<br>step <br>鍗曟璺熻釜錛屽鏋滄湁鍑芥暟璋冪敤錛屼粬浼氳繘鍏ヨ鍑芥暟銆傝繘鍏ュ嚱鏁扮殑鍓嶆彁鏄紝姝ゅ嚱鏁拌緙栬瘧鏈塪ebug<br>淇℃伅銆傚緢鍍廣C絳夊伐鍏蜂腑鐨剆tep in銆傚悗闈㈠彲浠ュ姞count涔熷彲浠ヤ笉鍔狅紝涓嶅姞琛ㄧず涓鏉℃潯鍦版墽琛岋紝<br>鍔犺〃紺烘墽琛屽悗闈㈢殑count鏉℃寚浠わ紝鐒跺悗鍐嶅仠浣忋?<br>next <br>鍚屾牱鍗曟璺熻釜錛屽鏋滄湁鍑芥暟璋冪敤錛屼粬涓嶄細榪涘叆璇ュ嚱鏁般傚緢鍍廣C絳夊伐鍏蜂腑鐨剆tep over銆傚悗闈?br>鍙互鍔燾ount涔熷彲浠ヤ笉鍔狅紝涓嶅姞琛ㄧず涓鏉℃潯鍦版墽琛岋紝鍔犺〃紺烘墽琛屽悗闈㈢殑count鏉℃寚浠わ紝鐒跺悗<br>鍐嶅仠浣忋?<br>set step-mode <br>set step-mode on <br>鎵撳紑step-mode妯″紡錛屼簬鏄紝鍦ㄨ繘琛屽崟姝ヨ窡韙椂錛岀▼搴忎笉浼氬洜涓烘病鏈塪ebug淇℃伅鑰屼笉鍋滀綇銆?br>榪欎釜鍙傛暟鏈夊緢鍒╀簬鏌ョ湅鏈哄櫒鐮併?<br>set step-mod off <br>鍏抽棴step-mode妯″紡銆?<br>finish <br>榪愯紼嬪簭錛岀洿鍒板綋鍓嶅嚱鏁板畬鎴愯繑鍥炪傚茍鎵撳嵃鍑芥暟榪斿洖鏃剁殑鍫嗘爤鍦板潃鍜岃繑鍥炲煎強鍙傛暟鍊肩瓑淇℃伅銆?<br>until 鎴?u <br>褰撲綘鍘屽︿簡鍦ㄤ竴涓驚鐜綋鍐呭崟姝ヨ窡韙椂錛岃繖涓懡浠ゅ彲浠ヨ繍琛岀▼搴忕洿鍒伴鍑哄驚鐜綋銆?<br>stepi 鎴?si <br>nexti 鎴?ni <br>鍗曟璺熻釜涓鏉℃満鍣ㄦ寚浠わ紒涓鏉$▼搴忎唬鐮佹湁鍙兘鐢辨暟鏉℃満鍣ㄦ寚浠ゅ畬鎴愶紝stepi鍜宯exti鍙互鍗曟<br>鎵ц鏈哄櫒鎸囦護銆備笌涔嬩竴鏍鋒湁鐩稿悓鍔熻兘鐨勫懡浠ゆ槸“display/i $pc” 錛屽綋榪愯瀹岃繖涓懡浠ゅ悗錛屽崟<br>姝ヨ窡韙細鍦ㄦ墦鍑虹▼搴忎唬鐮佺殑鍚屾椂鎵撳嚭鏈哄櫒鎸囦護錛堜篃灝辨槸姹囩紪浠g爜錛?</p> <p>涔濄佷俊鍙鳳紙Signals錛?<br>淇″彿鏄竴縐嶈蔣涓柇錛屾槸涓縐嶅鐞嗗紓姝ヤ簨浠剁殑鏂規硶銆備竴鑸潵璇達紝鎿嶄綔緋葷粺閮芥敮鎸佽澶氫俊鍙楓傚挨<br>鍏舵槸UNIX錛屾瘮杈冮噸瑕佸簲鐢ㄧ▼搴忎竴鑸兘浼氬鐞嗕俊鍙楓俇NIX瀹氫箟浜嗚澶氫俊鍙鳳紝姣斿SIGINT<br>琛ㄧず涓柇瀛楃淇″彿錛屼篃灝辨槸Ctrl+C鐨勪俊鍙鳳紝SIGBUS琛ㄧず紜歡鏁呴殰鐨勪俊鍙鳳紱SIGCHLD琛ㄧず<br>瀛愯繘紼嬬姸鎬佹敼鍙樹俊鍙鳳紱SIGKILL琛ㄧず緇堟紼嬪簭榪愯鐨勪俊鍙鳳紝絳夌瓑銆備俊鍙烽噺緙栫▼鏄疷NIX涓?br>闈炲父閲嶈鐨勪竴縐嶆妧鏈?<br>GDB鏈夎兘鍔涘湪浣犺皟璇曠▼搴忕殑鏃跺欏鐞嗕換浣曚竴縐嶄俊鍙鳳紝浣犲彲浠ュ憡璇塆DB闇瑕佸鐞嗗摢涓縐嶄俊<br>鍙楓備綘鍙互瑕佹眰GDB鏀跺埌浣犳墍鎸囧畾鐨勪俊鍙鋒椂錛岄┈涓婂仠浣忔鍦ㄨ繍琛岀殑紼嬪簭錛屼互渚涗綘榪涜璋冭瘯銆?br>浣犲彲浠ョ敤GDB鐨刪andle鍛戒護鏉ュ畬鎴愯繖涓鍔熻兘銆?<br>handle <br>鍦℅DB涓畾涔変竴涓俊鍙峰鐞嗐備俊鍙峰彲浠ヤ互SIG寮澶存垨涓嶄互SIG寮澶達紝鍙互鐢ㄥ畾涔変竴涓澶?br>鐞嗕俊鍙風殑鑼冨洿錛堝錛歋IGIO-SIGKILL錛岃〃紺哄鐞嗕粠SIGIO淇″彿鍒癝IGKILL鐨勪俊鍙鳳紝鍏朵腑鍖?br>鎷琒IGIO錛孲IGIOT錛孲IGKILL涓変釜淇″彿錛夛紝涔熷彲浠ヤ嬌鐢ㄥ叧閿瓧all鏉ユ爣鏄庤澶勭悊鎵鏈夌殑淇″彿銆?br>涓鏃﹁璋冭瘯鐨勭▼搴忔帴鏀跺埌淇″彿錛岃繍琛岀▼搴忛┈涓婁細琚獹DB鍋滀綇錛屼互渚涜皟璇曘傚叾鍙互鏄互涓嬪嚑<br>縐嶅叧閿瓧鐨勪竴涓垨澶氫釜銆?<br>nostop <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB涓嶄細鍋滀綇紼嬪簭鐨勮繍琛岋紝浣嗕細鎵撳嚭娑堟伅鍛婅瘔浣犳敹鍒拌繖縐嶄俊<br>鍙楓?<br>stop <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB浼氬仠浣忎綘鐨勭▼搴忋?<br>print <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB浼氭樉紺哄嚭涓鏉′俊鎭?<br>noprint <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB涓嶄細鍛婅瘔浣犳敹鍒頒俊鍙風殑淇℃伅銆?<br>pass <br>noignore <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB涓嶅鐞嗕俊鍙楓傝繖琛ㄧず錛孏DB浼氭妸榪欎釜淇″彿浜ょ粰琚皟璇曠▼<br>搴忎細澶勭悊銆?<br>nopass <br>ignore <br>褰撹璋冭瘯鐨勭▼搴忔敹鍒頒俊鍙鋒椂錛孏DB涓嶄細璁╄璋冭瘯紼嬪簭鏉ュ鐞嗚繖涓俊鍙楓?<br>info signals <br>info handle <br>鏌ョ湅鏈夊摢浜涗俊鍙峰湪琚獹DB媯嫻嬩腑銆?<br>鍗併佺嚎紼嬶紙Thread Stops錛?</p> <p>濡傛灉浣犵▼搴忔槸澶氱嚎紼嬬殑璇濓紝浣犲彲浠ュ畾涔変綘鐨勬柇鐐規槸鍚﹀湪鎵鏈夌殑綰跨▼涓婏紝鎴栨槸鍦ㄦ煇涓壒瀹氱殑綰?br>紼嬨侴DB寰堝鏄撳府浣犲畬鎴愯繖涓宸ヤ綔銆?<br>break thread <br>break thread if ... <br>linespec鎸囧畾浜嗘柇鐐硅緗湪鐨勬簮紼嬪簭鐨勮鍙楓倀hreadno鎸囧畾浜嗙嚎紼嬬殑ID錛屾敞鎰忥紝榪欎釜ID鏄?br>GDB鍒嗛厤鐨勶紝浣犲彲浠ラ氳繃“info threads”鍛戒護鏉ユ煡鐪嬫鍦ㄨ繍琛岀▼搴忎腑鐨勭嚎紼嬩俊鎭傚鏋滀綘<br>涓嶆寚瀹歵hread 鍒欒〃紺轟綘鐨勬柇鐐硅鍦ㄦ墍鏈夌嚎紼嬩笂闈€備綘榪樺彲浠ヤ負鏌愮嚎紼嬫寚瀹氭柇鐐規潯浠躲傚錛?<br>(gdb) break frik.c:13 thread 28 if bartab > lim <br>褰撲綘鐨勭▼搴忚GDB鍋滀綇鏃訛紝鎵鏈夌殑榪愯綰跨▼閮戒細琚仠浣忋傝繖鏂逛究浣犱綘鏌ョ湅榪愯紼嬪簭鐨勬諱綋<br>鎯呭喌銆傝屽湪浣犳仮澶嶇▼搴忚繍琛屾椂錛屾墍鏈夌殑綰跨▼涔熶細琚仮澶嶈繍琛屻傞偅鎬曟槸涓昏繘紼嬪湪琚崟姝ヨ皟璇曟椂銆?<br>鏌ョ湅鏍堜俊鎭?<br>鈥斺斺斺斺?<br>褰撶▼搴忚鍋滀綇浜嗭紝浣犻渶瑕佸仛鐨勭涓浠朵簨灝辨槸鏌ョ湅紼嬪簭鏄湪鍝噷鍋滀綇鐨勩傚綋浣犵殑紼嬪簭璋冪敤浜嗕竴<br>涓嚱鏁幫紝鍑芥暟鐨勫湴鍧錛屽嚱鏁板弬鏁幫紝鍑芥暟鍐呯殑灞閮ㄥ彉閲忛兘浼氳鍘嬪叆“鏍?#8221;錛圫tack錛変腑銆備綘鍙互<br>鐢℅DB鍛戒護鏉ユ煡鐪嬪綋鍓嶇殑鏍堜腑鐨勪俊鎭?<br>涓嬮潰鏄竴浜涙煡鐪嬪嚱鏁拌皟鐢ㄦ爤淇℃伅鐨凣DB鍛戒護錛?<br>backtrace <br>bt <br>鎵撳嵃褰撳墠鐨勫嚱鏁拌皟鐢ㄦ爤鐨勬墍鏈変俊鎭傚錛?<br>(gdb) bt <br>#0 func (n=250) at tst.c:6 <br>#1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30 <br>#2 0x400409ed in __libc_start_main () from /lib/libc.so.6 <br>浠庝笂鍙互鐪嬪嚭鍑芥暟鐨勮皟鐢ㄦ爤淇℃伅錛歘_libc_start_main --> main() --> func() <br>backtrace <br>bt <br>n鏄竴涓鏁存暟錛岃〃紺哄彧鎵撳嵃鏍堥《涓妌灞傜殑鏍堜俊鎭?<br>backtrace <-n> <br>bt <-n> <br>-n琛ㄤ竴涓礋鏁存暟錛岃〃紺哄彧鎵撳嵃鏍堝簳涓媙灞傜殑鏍堜俊鎭?<br>濡傛灉浣犺鏌ョ湅鏌愪竴灞傜殑淇℃伅錛屼綘闇瑕佸湪鍒囨崲褰撳墠鐨勬爤錛屼竴鑸潵璇達紝紼嬪簭鍋滄鏃訛紝鏈欏跺眰鐨勬爤</p> <p>灝辨槸褰撳墠鏍堬紝濡傛灉浣犺鏌ョ湅鏍堜笅闈㈠眰鐨勮緇嗕俊鎭紝棣栧厛瑕佸仛鐨勬槸鍒囨崲褰撳墠鏍堛?<br>frame <br>f <br>n鏄竴涓粠0寮濮嬬殑鏁存暟錛屾槸鏍堜腑鐨勫眰緙栧彿銆傛瘮濡傦細frame 0錛岃〃紺烘爤欏訛紝frame 1錛岃〃紺烘爤鐨?br>絎簩灞傘?<br>up <br>琛ㄧず鍚戞爤鐨勪笂闈㈢Щ鍔╪灞傦紝鍙互涓嶆墦n錛岃〃紺哄悜涓婄Щ鍔ㄤ竴灞傘?<br>down <br>琛ㄧず鍚戞爤鐨勪笅闈㈢Щ鍔╪灞傦紝鍙互涓嶆墦n錛岃〃紺哄悜涓嬬Щ鍔ㄤ竴灞傘?<br>涓婇潰鐨勫懡浠わ紝閮戒細鎵撳嵃鍑虹Щ鍔ㄥ埌鐨勬爤灞傜殑淇℃伅銆傚鏋滀綘涓嶆兂璁╁叾鎵撳嚭淇℃伅銆備綘鍙互浣跨敤榪欎笁<br>涓懡浠わ細 <br>select-frame 瀵瑰簲浜?frame 鍛戒護銆?<br>up-silently 瀵瑰簲浜?up 鍛戒護銆?<br>down-silently 瀵瑰簲浜?down 鍛戒護銆?<br>鏌ョ湅褰撳墠鏍堝眰鐨勪俊鎭紝浣犲彲浠ョ敤浠ヤ笅GDB鍛戒護錛?<br>frame 鎴?f <br>浼氭墦鍗板嚭榪欎簺淇℃伅錛氭爤鐨勫眰緙栧彿錛屽綋鍓嶇殑鍑芥暟鍚嶏紝鍑芥暟鍙傛暟鍊鹼紝鍑芥暟鎵鍦ㄦ枃浠跺強琛屽彿錛屽嚱鏁?br>鎵ц鍒扮殑璇彞銆?<br>info frame <br>info f <br>榪欎釜鍛戒護浼氭墦鍗板嚭鏇翠負璇︾粏鐨勫綋鍓嶆爤灞傜殑淇℃伅錛屽彧涓嶈繃錛屽ぇ澶氭暟閮芥槸榪愯鏃剁殑鍐呭唴鍦板潃銆傛瘮<br>濡傦細鍑芥暟鍦板潃錛岃皟鐢ㄥ嚱鏁扮殑鍦板潃錛岃璋冪敤鍑芥暟鐨勫湴鍧錛岀洰鍓嶇殑鍑芥暟鏄敱浠涔堟牱鐨勭▼搴忚璦鍐?br>鎴愮殑銆佸嚱鏁板弬鏁板湴鍧鍙婂箋佸眬閮ㄥ彉閲忕殑鍦板潃絳夌瓑銆傚錛?<br>(gdb) info f <br>Stack level 0, frame at 0xbffff5d4: <br>eip = 0x804845d in func (tst.c:6); saved eip 0x8048524 <br>called by frame at 0xbffff60c <br>source language c. <br>Arglist at 0xbffff5d4, args: n=250 <br>Locals at 0xbffff5d4, Previous frame's sp is 0x0 <br>Saved registers: <br>ebp at 0xbffff5d4, eip at 0xbffff5d8 <br>info args </p> <p>鎵撳嵃鍑哄綋鍓嶅嚱鏁扮殑鍙傛暟鍚嶅強鍏跺箋?<br>info locals <br>鎵撳嵃鍑哄綋鍓嶅嚱鏁頒腑鎵鏈夊眬閮ㄥ彉閲忓強鍏跺箋?<br>info catch <br>鎵撳嵃鍑哄綋鍓嶇殑鍑芥暟涓殑寮傚父澶勭悊淇℃伅銆?<br>鏌ョ湅婧愮▼搴?<br>鈥斺斺斺斺?<br>涓銆佹樉紺烘簮浠g爜 <br>GDB 鍙互鎵撳嵃鍑烘墍璋冭瘯紼嬪簭鐨勬簮浠g爜錛屽綋鐒訛紝鍦ㄧ▼搴忕紪璇戞椂涓瀹氳鍔犱笂-g鐨勫弬鏁幫紝鎶婃簮紼?br>搴忎俊鎭紪璇戝埌鎵ц鏂囦歡涓備笉鐒跺氨鐪嬩笉鍒版簮紼嬪簭浜嗐傚綋紼嬪簭鍋滀笅鏉ヤ互鍚庯紝GDB浼氭姤鍛婄▼搴?br>鍋滃湪浜嗛偅涓枃浠剁殑絎嚑琛屼笂銆備綘鍙互鐢╨ist鍛戒護鏉ユ墦鍗扮▼搴忕殑婧愪唬鐮併傝繕鏄潵鐪嬩竴鐪嬫煡鐪嬫簮<br>浠g爜鐨凣DB鍛戒護鍚с?<br>list <br>鏄劇ず紼嬪簭絎琹inenum琛岀殑鍛ㄥ洿鐨勬簮紼嬪簭銆?<br>list <br>鏄劇ず鍑芥暟鍚嶄負function鐨勫嚱鏁扮殑婧愮▼搴忋?<br>list <br>鏄劇ず褰撳墠琛屽悗闈㈢殑婧愮▼搴忋?<br>list - <br>鏄劇ず褰撳墠琛屽墠闈㈢殑婧愮▼搴忋?<br>涓鑸槸鎵撳嵃褰撳墠琛岀殑涓?琛屽拰涓?琛岋紝濡傛灉鏄劇ず鍑芥暟鏄槸涓?琛屼笅8琛岋紝榛樿鏄?0琛岋紝褰?br>鐒訛紝浣犱篃鍙互瀹氬埗鏄劇ず鐨勮寖鍥達紝浣跨敤涓嬮潰鍛戒護鍙互璁劇疆涓嬈℃樉紺烘簮紼嬪簭鐨勮鏁般?<br>set listsize <br>璁劇疆涓嬈℃樉紺烘簮浠g爜鐨勮鏁般?<br>show listsize <br>鏌ョ湅褰撳墠listsize鐨勮緗?<br>list鍛戒護榪樻湁涓嬮潰鐨勭敤娉曪細 <br>list , </p> <p>鏄劇ず浠巉irst琛屽埌last琛屼箣闂寸殑婧愪唬鐮併?<br>list , <br>鏄劇ず浠庡綋鍓嶈鍒發ast琛屼箣闂寸殑婧愪唬鐮併?<br>list + <br>寰鍚庢樉紺烘簮浠g爜銆?<br>涓鑸潵璇村湪list鍚庨潰鍙互璺熶互涓嬭繖浠殑鍙傛暟錛?<br>琛屽彿銆?<br><+offset> 褰撳墠琛屽彿鐨勬鍋忕Щ閲忋?<br><-offset> 褰撳墠琛屽彿鐨勮礋鍋忕Щ閲忋?<br>鍝釜鏂囦歡鐨勫摢涓琛屻?<br>鍑芥暟鍚嶃?<br>鍝釜鏂囦歡涓殑鍝釜鍑芥暟銆?<br><*address> 紼嬪簭榪愯鏃剁殑璇彞鍦ㄥ唴瀛樹腑鐨勫湴鍧銆?<br>浜屻佹悳绱㈡簮浠g爜 <br>涓嶄粎濡傛錛孏DB榪樻彁渚涗簡婧愪唬鐮佹悳绱㈢殑鍛戒護錛?<br>forward-search <br>search <br>鍚戝墠闈㈡悳绱€?<br>reverse-search <br>鍏ㄩ儴鎼滅儲銆?<br>鍏朵腑錛屽氨鏄鍒欒〃杈懼紡錛屼篃涓諱竴涓瓧絎︿覆鐨勫尮閰嶆ā寮忥紝鍏充簬姝e垯琛ㄨ揪寮忥紝鎴戝氨涓嶅湪榪欓噷璁蹭簡錛?br>榪樿鍚勪綅鏌ョ湅鐩稿叧璧勬枡銆?<br>涓夈佹寚瀹氭簮鏂囦歡鐨勮礬寰?<br>鏌愪簺鏃跺欙紝鐢?g緙栬瘧榪囧悗鐨勬墽琛岀▼搴忎腑鍙槸鍖呮嫭浜嗘簮鏂囦歡鐨勫悕瀛楋紝娌℃湁璺緞鍚嶃侴DB鎻愪緵<br>浜嗗彲浠ヨ浣犳寚瀹氭簮鏂囦歡鐨勮礬寰勭殑鍛戒護錛屼互渚縂DB榪涜鎼滅儲銆?<br>directory <br>dir <br>鍔犱竴涓簮鏂囦歡璺緞鍒板綋鍓嶈礬寰勭殑鍓嶉潰銆傚鏋滀綘瑕佹寚瀹氬涓礬寰勶紝UNIX涓嬩綘鍙互浣跨敤“:”錛?br>Windows涓嬩綘鍙互浣跨敤“;”銆?</p> <p>directory <br>娓呴櫎鎵鏈夌殑鑷畾涔夌殑婧愭枃浠舵悳绱㈣礬寰勪俊鎭?<br>show directories <br>鏄劇ず瀹氫箟浜嗙殑婧愭枃浠舵悳绱㈣礬寰勩?<br>鍥涖佹簮浠g爜鐨勫唴瀛?<br>浣犲彲浠ヤ嬌鐢╥nfo line鍛戒護鏉ユ煡鐪嬫簮浠g爜鍦ㄥ唴瀛樹腑鐨勫湴鍧銆俰nfo line鍚庨潰鍙互璺?#8220;琛屽彿”錛?#8220;鍑?br>鏁板悕”錛?#8220;鏂囦歡鍚?琛屽彿”錛?#8220;鏂囦歡鍚?鍑芥暟鍚?#8221;錛岃繖涓懡浠や細鎵撳嵃鍑烘墍鎸囧畾鐨勬簮鐮佸湪榪愯鏃剁殑鍐?br>瀛樺湴鍧錛屽錛?<br>(gdb) info line tst.c:func <br>Line 5 of "tst.c" starts at address 0x8048456 and ends at 0x804845d . <br>榪樻湁涓涓懡浠わ紙disassemble錛変綘鍙互鏌ョ湅婧愮▼搴忕殑褰撳墠鎵ц鏃剁殑鏈哄櫒鐮侊紝榪欎釜鍛戒護浼氭妸鐩墠<br>鍐呭瓨涓殑鎸囦護dump鍑烘潵銆傚涓嬮潰鐨勭ず渚嬭〃紺烘煡鐪嬪嚱鏁癴unc鐨勬眹緙栦唬鐮併?<br>(gdb) disassemble func <br>Dump of assembler code for function func: <br>0x8048450 : push %ebp <br>0x8048451 : mov %esp,%ebp <br>0x8048453 : sub $0x18,%esp <br>0x8048456 : movl $0x0,0xfffffffc(%ebp) <br>0x804845d : movl $0x1,0xfffffff8(%ebp) <br>0x8048464 : mov 0xfffffff8(%ebp),%eax <br>0x8048467 : cmp 0x8(%ebp),%eax <br>0x804846a : jle 0x8048470 <br>0x804846c : jmp 0x8048480 <br>0x804846e : mov %esi,%esi <br>0x8048470 : mov 0xfffffff8(%ebp),%eax <br>0x8048473 : add %eax,0xfffffffc(%ebp) <br>0x8048476 : incl 0xfffffff8(%ebp) <br>0x8048479 : jmp 0x8048464 <br>0x804847b : nop <br>0x804847c : lea 0x0(%esi,1),%esi <br>0x8048480 : mov 0xfffffffc(%ebp),%edx <br>0x8048483 : mov %edx,%eax <br>0x8048485 : jmp 0x8048487 <br>0x8048487 : mov %ebp,%esp <br>0x8048489 : pop %ebp <br>0x804848a : ret <br>End of assembler dump. </p> <p>鏌ョ湅榪愯鏃舵暟鎹?<br>鈥斺斺斺斺斺斺?<br>鍦ㄤ綘璋冭瘯紼嬪簭鏃訛紝褰撶▼搴忚鍋滀綇鏃訛紝浣犲彲浠ヤ嬌鐢╬rint鍛戒護錛堢畝鍐欏懡浠や負p錛夛紝鎴栨槸鍚屼箟鍛戒護<br>inspect鏉ユ煡鐪嬪綋鍓嶇▼搴忕殑榪愯鏁版嵁銆俻rint鍛戒護鐨勬牸寮忔槸錛?<br>print <br>print / <br>鏄〃杈懼紡錛屾槸浣犳墍璋冭瘯鐨勭▼搴忕殑璇█鐨勮〃杈懼紡錛圙DB鍙互璋冭瘯澶氱緙栫▼璇█錛夛紝鏄緭鍑虹殑鏍?br>寮忥紝姣斿錛屽鏋滆鎶婅〃杈懼紡鎸?6榪涘埗鐨勬牸寮忚緭鍑猴紝閭d箞灝辨槸/x銆?<br>涓銆佽〃杈懼紡 <br>print鍜岃澶欸DB鐨勫懡浠や竴鏍鳳紝鍙互鎺ュ彈涓涓〃杈懼紡錛孏DB浼氭牴鎹綋鍓嶇殑紼嬪簭榪愯鐨勬暟鎹?br>鏉ヨ綆楄繖涓〃杈懼紡錛屾棦鐒舵槸琛ㄨ揪寮忥紝閭d箞灝卞彲浠ユ槸褰撳墠紼嬪簭榪愯涓殑const甯擱噺銆佸彉閲忋佸嚱<br>鏁扮瓑鍐呭銆傚彲鎯滅殑鏄疓DB涓嶈兘浣跨敤浣犲湪紼嬪簭涓墍瀹氫箟鐨勫畯銆?<br>琛ㄨ揪寮忕殑璇硶搴旇鏄綋鍓嶆墍璋冭瘯鐨勮璦鐨勮娉曪紝鐢變簬C/C++鏄竴縐嶅ぇ浼楀瀷鐨勮璦錛屾墍浠ワ紝鏈?br>鏂囦腑鐨勪緥瀛愰兘鏄叧浜嶤/C++鐨勩傦紙鑰屽叧浜庣敤GDB璋冭瘯鍏跺畠璇█鐨勭珷鑺傦紝鎴戝皢鍦ㄥ悗闈粙緇嶏級 <br>鍦ㄨ〃杈懼紡涓紝鏈夊嚑縐岹DB鎵鏀寔鐨勬搷浣滅錛屽畠浠彲浠ョ敤鍦ㄤ換浣曚竴縐嶈璦涓?<br>@ <br>鏄竴涓拰鏁扮粍鏈夊叧鐨勬搷浣滅錛屽湪鍚庨潰浼氭湁鏇磋緇嗙殑璇存槑銆?<br>:: <br>鎸囧畾涓涓湪鏂囦歡鎴栨槸涓涓嚱鏁頒腑鐨勫彉閲忋?<br>{} <br>琛ㄧず涓涓寚鍚戝唴瀛樺湴鍧鐨勭被鍨嬩負type鐨勪竴涓璞°?<br>浜屻佺▼搴忓彉閲?<br>鍦℅DB涓紝浣犲彲浠ラ殢鏃舵煡鐪嬩互涓嬩笁縐嶅彉閲忕殑鍊鹼細 <br>1銆佸叏灞鍙橀噺錛堟墍鏈夋枃浠跺彲瑙佺殑錛?<br>2銆侀潤鎬佸叏灞鍙橀噺錛堝綋鍓嶆枃浠跺彲瑙佺殑錛?<br>3銆佸眬閮ㄥ彉閲忥紙褰撳墠Scope鍙鐨勶級 <br>濡傛灉浣犵殑灞閮ㄥ彉閲忓拰鍏ㄥ眬鍙橀噺鍙戠敓鍐茬獊錛堜篃灝辨槸閲嶅悕錛夛紝涓鑸儏鍐典笅鏄眬閮ㄥ彉閲忎細闅愯棌鍏ㄥ眬<br>鍙橀噺錛屼篃灝辨槸璇達紝濡傛灉涓涓叏灞鍙橀噺鍜屼竴涓嚱鏁頒腑鐨勫眬閮ㄥ彉閲忓悓鍚嶆椂錛屽鏋滃綋鍓嶅仠姝㈢偣鍦ㄥ嚱</p> <p>鏁頒腑錛岀敤print鏄劇ず鍑虹殑鍙橀噺鐨勫間細鏄嚱鏁頒腑鐨勫眬閮ㄥ彉閲忕殑鍊箋傚鏋滄鏃朵綘鎯蟲煡鐪嬪叏灞鍙橀噺<br>鐨勫兼椂錛屼綘鍙互浣跨敤“::”鎿嶄綔絎︼細 <br>file::variable <br>function::variable <br>鍙互閫氳繃榪欑褰㈠紡鎸囧畾浣犳墍鎯蟲煡鐪嬬殑鍙橀噺錛屾槸鍝釜鏂囦歡涓殑鎴栨槸鍝釜鍑芥暟涓殑銆備緥濡傦紝鏌ョ湅<br>鏂囦歡f2.c涓殑鍏ㄥ眬鍙橀噺x鐨勫鹼細 <br>gdb) p 'f2.c'::x <br>褰撶劧錛?#8220;::”鎿嶄綔絎︿細鍜孋++涓殑鍙戠敓鍐茬獊錛孏DB鑳借嚜鍔ㄨ瘑鍒?#8220;::” 鏄惁C++鐨勬搷浣滅錛屾墍<br>浠ヤ綘涓嶅繀鎷呭績鍦ㄨ皟璇旵++紼嬪簭鏃朵細鍑虹幇寮傚父銆?<br>鍙﹀錛岄渶瑕佹敞鎰忕殑鏄紝濡傛灉浣犵殑紼嬪簭緙栬瘧鏃跺紑鍚簡浼樺寲閫夐」錛岄偅涔堝湪鐢℅DB璋冭瘯琚紭鍖栬繃<br>鐨勭▼搴忔椂錛屽彲鑳戒細鍙戠敓鏌愪簺鍙橀噺涓嶈兘璁塊棶錛屾垨鏄彇鍊奸敊璇爜鐨勬儏鍐點傝繖涓槸寰堟甯哥殑錛屽洜涓?br>浼樺寲紼嬪簭浼氬垹鏀逛綘鐨勭▼搴忥紝鏁寸悊浣犵▼搴忕殑璇彞欏哄簭錛屽墧闄や竴浜涙棤鎰忎箟鐨勫彉閲忕瓑錛屾墍浠ュ湪GDB<br>璋冭瘯榪欑紼嬪簭鏃訛紝榪愯鏃剁殑鎸囦護鍜屼綘鎵緙栧啓鎸囦護灝辨湁涓嶄竴鏍鳳紝涔熷氨浼氬嚭鐜頒綘鎵鎯寵薄涓嶅埌鐨勭粨<br>鏋溿傚浠樿繖縐嶆儏鍐墊椂錛岄渶瑕佸湪緙栬瘧紼嬪簭鏃跺叧闂紪璇戜紭鍖栥備竴鑸潵璇達紝鍑犱箮鎵鏈夌殑緙栬瘧鍣ㄩ兘鏀?br>鎸佺紪璇戜紭鍖栫殑寮鍏籌紝渚嬪錛孏NU鐨凜/C++緙栬瘧鍣℅CC錛屼綘鍙互浣跨敤“-gstabs”閫夐」鏉ヨВ鍐?br>榪欎釜闂銆傚叧浜庣紪璇戝櫒鐨勫弬鏁幫紝榪樿鏌ョ湅緙栬瘧鍣ㄧ殑浣跨敤璇存槑鏂囨。銆?<br>涓夈佹暟緇?<br>鏈夋椂鍊欙紝浣犻渶瑕佹煡鐪嬩竴孌佃繛緇殑鍐呭瓨絀洪棿鐨勫箋傛瘮濡傛暟緇勭殑涓孌碉紝鎴栨槸鍔ㄦ佸垎閰嶇殑鏁版嵁鐨勫ぇ<br>灝忋備綘鍙互浣跨敤GDB鐨?#8220;@”鎿嶄綔絎︼紝“@”鐨勫乏杈規槸絎竴涓唴瀛樼殑鍦板潃鐨勫鹼紝“@”鐨勫彸<br>杈瑰垯浣犱綘鎯蟲煡鐪嬪唴瀛樼殑闀垮害銆備緥濡傦紝浣犵殑紼嬪簭涓湁榪欐牱鐨勮鍙ワ細 <br>int *array = (int *) malloc (len * sizeof (int)); <br>浜庢槸錛屽湪GDB璋冭瘯榪囩▼涓紝浣犲彲浠ヤ互濡備笅鍛戒護鏄劇ず鍑鴻繖涓姩鎬佹暟緇勭殑鍙栧鹼細 <br>p <a href="mailto:*array@len"><font color=#336699>*array@len</font></a> <br>@鐨勫乏杈規槸鏁扮粍鐨勯鍦板潃鐨勫鹼紝涔熷氨鏄彉閲廰rray鎵鎸囧悜鐨勫唴瀹癸紝鍙寵竟鍒欐槸鏁版嵁鐨勯暱搴︼紝鍏?br>淇濆瓨鍦ㄥ彉閲弆en涓紝鍏惰緭鍑虹粨鏋滐紝澶х害鏄笅闈㈣繖涓牱瀛愮殑錛?<br>(gdb) p <a href="mailto:*array@len"><font color=#336699>*array@len</font></a> <br>$1 = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40} <br>濡傛灉鏄潤鎬佹暟緇勭殑璇濓紝鍙互鐩存帴鐢╬rint鏁扮粍鍚嶏紝灝卞彲浠ユ樉紺烘暟緇勪腑鎵鏈夋暟鎹殑鍐呭浜嗐?<br>鍥涖佽緭鍑烘牸寮?</p> <p>涓鑸潵璇達紝GDB浼氭牴鎹彉閲忕殑綾誨瀷杈撳嚭鍙橀噺鐨勫箋備絾浣犱篃鍙互鑷畾涔塆DB鐨勮緭鍑虹殑鏍煎紡銆?br>渚嬪錛屼綘鎯寵緭鍑轟竴涓暣鏁扮殑鍗佸叚榪涘埗錛屾垨鏄簩榪涘埗鏉ユ煡鐪嬭繖涓暣鍨嬪彉閲忕殑涓殑浣嶇殑鎯呭喌銆傝<br>鍋氬埌榪欐牱錛屼綘鍙互浣跨敤GDB鐨勬暟鎹樉紺烘牸寮忥細 <br>x 鎸夊崄鍏繘鍒舵牸寮忔樉紺哄彉閲忋?<br>d 鎸夊崄榪涘埗鏍煎紡鏄劇ず鍙橀噺銆?<br>u 鎸夊崄鍏繘鍒舵牸寮忔樉紺烘棤絎﹀彿鏁村瀷銆?<br>o 鎸夊叓榪涘埗鏍煎紡鏄劇ず鍙橀噺銆?<br>t 鎸変簩榪涘埗鏍煎紡鏄劇ず鍙橀噺銆?<br>a 鎸夊崄鍏繘鍒舵牸寮忔樉紺哄彉閲忋?<br>c 鎸夊瓧絎︽牸寮忔樉紺哄彉閲忋?<br>f 鎸夋誕鐐規暟鏍煎紡鏄劇ず鍙橀噺銆?<br>(gdb) p i <br>$21 = 101 <br>(gdb) p/a i <br>$22 = 0x65 <br>(gdb) p/c i <br>$23 = 101 'e' <br>(gdb) p/f i <br>$24 = 1.41531145e-43 <br>(gdb) p/x i <br>$25 = 0x65 <br>(gdb) p/t i <br>$26 = 1100101 <br>浜斻佹煡鐪嬪唴瀛?<br>浣犲彲浠ヤ嬌鐢╡xamine鍛戒護錛堢畝鍐欐槸x錛夋潵鏌ョ湅鍐呭瓨鍦板潃涓殑鍊箋倄鍛戒護鐨勮娉曞涓嬫墍紺猴細 <br>x/ <br>n銆乫銆乽鏄彲閫夌殑鍙傛暟銆?<br>n 鏄竴涓鏁存暟錛岃〃紺烘樉紺哄唴瀛樼殑闀垮害錛屼篃灝辨槸璇翠粠褰撳墠鍦板潃鍚戝悗鏄劇ず鍑犱釜鍦板潃鐨勫唴瀹廣?<br>f 琛ㄧず鏄劇ず鐨勬牸寮忥紝鍙傝涓婇潰銆傚鏋滃湴鍧鎵鎸囩殑鏄瓧絎︿覆錛岄偅涔堟牸寮忓彲浠ユ槸s錛屽鏋滃湴鍗佹槸<br>鎸囦護鍦板潃錛岄偅涔堟牸寮忓彲浠ユ槸i銆?</p> <p>u 琛ㄧず浠庡綋鍓嶅湴鍧寰鍚庤姹傜殑瀛楄妭鏁幫紝濡傛灉涓嶆寚瀹氱殑璇濓紝GDB榛樿鏄?涓猙ytes銆倁鍙傛暟鍙?br>浠ョ敤涓嬮潰鐨勫瓧絎︽潵浠f浛錛宐琛ㄧず鍗曞瓧鑺傦紝h琛ㄧず鍙屽瓧鑺傦紝w琛ㄧず鍥涘瓧鑺傦紝g琛ㄧず鍏瓧鑺傘傚綋<br>鎴戜滑鎸囧畾浜嗗瓧鑺傞暱搴﹀悗錛孏DB浼氫粠鎸囧唴瀛樺畾鐨勫唴瀛樺湴鍧寮濮嬶紝璇誨啓鎸囧畾瀛楄妭錛屽茍鎶婂叾褰撲綔<br>涓涓煎彇鍑烘潵銆?<br>琛ㄧず涓涓唴瀛樺湴鍧銆?<br>n/f/u涓変釜鍙傛暟鍙互涓璧蜂嬌鐢ㄣ備緥濡傦細 <br>鍛戒護錛歺/3uh 0x54320 琛ㄧず錛屼粠鍐呭瓨鍦板潃0x54320璇誨彇鍐呭錛宧琛ㄧず浠ュ弻瀛楄妭涓轟竴涓崟浣嶏紝3<br>琛ㄧず涓変釜鍗曚綅錛寀琛ㄧず鎸夊崄鍏繘鍒舵樉紺恒?<br>鍏佽嚜鍔ㄦ樉紺?<br>浣犲彲浠ヨ緗竴浜涜嚜鍔ㄦ樉紺虹殑鍙橀噺錛屽綋紼嬪簭鍋滀綇鏃訛紝鎴栨槸鍦ㄤ綘鍗曟璺熻釜鏃訛紝榪欎簺鍙橀噺浼氳嚜鍔ㄦ樉<br>紺恒傜浉鍏崇殑GDB鍛戒護鏄痙isplay銆?<br>display <br>display/ <br>display/ <br>expr鏄竴涓〃杈懼紡錛宖mt琛ㄧず鏄劇ず鐨勬牸寮忥紝addr琛ㄧず鍐呭瓨鍦板潃錛屽綋浣犵敤display璁懼畾濂戒簡涓<br>涓垨澶氫釜琛ㄨ揪寮忓悗錛屽彧瑕佷綘鐨勭▼搴忚鍋滀笅鏉ワ紝GDB浼氳嚜鍔ㄦ樉紺轟綘鎵璁劇疆鐨勮繖浜涜〃杈懼紡鐨勫箋?<br>鏍煎紡i鍜宻鍚屾牱琚玠isplay鏀寔錛屼竴涓潪甯告湁鐢ㄧ殑鍛戒護鏄細 <br>display/i $pc <br>$pc鏄疓DB鐨勭幆澧冨彉閲忥紝琛ㄧず鐫鎸囦護鐨勫湴鍧錛?i鍒欒〃紺鴻緭鍑烘牸寮忎負鏈哄櫒鎸囦護鐮侊紝涔熷氨鏄眹<br>緙栥備簬鏄綋紼嬪簭鍋滀笅鍚庯紝灝變細鍑虹幇婧愪唬鐮佸拰鏈哄櫒鎸囦護鐮佺浉瀵瑰簲鐨勬儏褰紝榪欐槸涓涓緢鏈夋剰鎬濈殑<br>鍔熻兘銆?<br>涓嬮潰鏄竴浜涘拰display鐩稿叧鐨凣DB鍛戒護錛?<br>undisplay <br>delete display <br>鍒犻櫎鑷姩鏄劇ず錛宒nums鎰忎負鎵璁劇疆濂戒簡鐨勮嚜鍔ㄦ樉寮忕殑緙栧彿銆傚鏋滆鍚屾椂鍒犻櫎鍑犱釜錛岀紪鍙峰彲浠?br>鐢ㄧ┖鏍煎垎闅旓紝濡傛灉瑕佸垹闄や竴涓寖鍥村唴鐨勭紪鍙鳳紝鍙互鐢ㄥ噺鍙瘋〃紺猴紙濡傦細2-5錛?<br>disable display <br>enable display <br>disable鍜宔nalbe涓嶅垹闄よ嚜鍔ㄦ樉紺虹殑璁劇疆錛岃屽彧鏄鍏跺け鏁堝拰鎭㈠銆?</p> <p>info display <br>鏌ョ湅display璁劇疆鐨勮嚜鍔ㄦ樉紺虹殑淇℃伅銆侴DB浼氭墦鍑轟竴寮犺〃鏍鹼紝鍚戜綘鎶ュ憡褰撶劧璋冭瘯涓緗簡澶?br>灝戜釜鑷姩鏄劇ず璁劇疆錛屽叾涓寘鎷紝璁劇疆鐨勭紪鍙鳳紝琛ㄨ揪寮忥紝鏄惁enable銆?<br>涓冦佽緗樉紺洪夐」 <br>GDB涓叧浜庢樉紺虹殑閫夐」姣旇緝澶氾紝榪欓噷鎴戝彧渚嬩婦澶у鏁板父鐢ㄧ殑閫夐」銆?<br>set print address <br>set print address on <br>鎵撳紑鍦板潃杈撳嚭錛屽綋紼嬪簭鏄劇ず鍑芥暟淇℃伅鏃訛紝GDB浼氭樉鍑哄嚱鏁扮殑鍙傛暟鍦板潃銆傜郴緇熼粯璁や負鎵撳紑鐨勶紝<br>濡傦細 <br>(gdb) f <br>#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") <br>at input.c:530 <br>530 if (lquote != def_lquote) <br>set print address off <br>鍏抽棴鍑芥暟鐨勫弬鏁板湴鍧鏄劇ず錛屽錛?<br>(gdb) set print addr off <br>(gdb) f <br>#0 set_quotes (lq="<<", rq=">>") at input.c:530 <br>530 if (lquote != def_lquote) <br>show print address <br>鏌ョ湅褰撳墠鍦板潃鏄劇ず閫夐」鏄惁鎵撳紑銆?<br>set print array <br>set print array on <br>鎵撳紑鏁扮粍鏄劇ず錛屾墦寮鍚庡綋鏁扮粍鏄劇ず鏃訛紝姣忎釜鍏冪礌鍗犱竴琛岋紝濡傛灉涓嶆墦寮鐨勮瘽錛屾瘡涓厓绱犲垯浠ラ?br>鍙峰垎闅斻傝繖涓夐」榛樿鏄叧闂殑銆備笌涔嬬浉鍏崇殑涓や釜鍛戒護濡備笅錛屾垜灝變笉鍐嶅璇翠簡銆?<br>set print array off <br>show print array <br>set print elements <br>榪欎釜閫夐」涓昏鏄緗暟緇勭殑錛屽鏋滀綘鐨勬暟緇勫お澶т簡錛岄偅涔堝氨鍙互鎸囧畾涓涓潵鎸囧畾鏁版嵁鏄劇ず鐨?br>鏈澶ч暱搴︼紝褰撳埌杈捐繖涓暱搴︽椂錛孏DB灝變笉鍐嶅線涓嬫樉紺轟簡銆傚鏋滆緗負0錛屽垯琛ㄧず涓嶉檺鍒躲?<br>show print elements </p> <p>鏌ョ湅print elements鐨勯夐」淇℃伅銆?<br>set print null-stop <br>濡傛灉鎵撳紑浜嗚繖涓夐」錛岄偅涔堝綋鏄劇ず瀛楃涓叉椂錛岄亣鍒扮粨鏉熺鍒欏仠姝㈡樉紺恒傝繖涓夐」榛樿涓簅ff銆?<br>set print pretty on <br>濡傛灉鎵撳紑printf pretty榪欎釜閫夐」錛岄偅涔堝綋GDB鏄劇ず緇撴瀯浣撴椂浼氭瘮杈冩紓浜傚錛?<br>$1 = { <br>next = 0x0, <br>flags = { <br>sweet = 1, <br>sour = 1 <br>}, <br>meat = 0x54 "Pork" <br>} <br>set print pretty off <br>鍏抽棴printf pretty榪欎釜閫夐」錛孏DB鏄劇ず緇撴瀯浣撴椂浼氬涓嬫樉紺猴細 <br>$1 = {next = 0x0, flags = {sweet = 1, sour = 1}, meat = 0x54 "Pork"} <br>show print pretty <br>鏌ョ湅GDB鏄浣曟樉紺虹粨鏋勪綋鐨勩?<br>set print sevenbit-strings <br>璁劇疆瀛楃鏄劇ず錛屾槸鍚︽寜“\nnn”鐨勬牸寮忔樉紺猴紝濡傛灉鎵撳紑錛屽垯瀛楃涓叉垨瀛楃鏁版嵁鎸塡nnn鏄劇ず錛?br>濡?#8220;\065”銆?<br>show print sevenbit-strings <br>鏌ョ湅瀛楃鏄劇ず寮鍏蟲槸鍚︽墦寮銆?<br>set print union <br>璁劇疆鏄劇ず緇撴瀯浣撴椂錛屾槸鍚︽樉寮忓叾鍐呯殑鑱斿悎浣撴暟鎹備緥濡傛湁浠ヤ笅鏁版嵁緇撴瀯錛?<br>typedef enum {Tree, Bug} Species; <br>typedef enum {Big_tree, Acorn, Seedling} Tree_forms; <br>typedef enum {Caterpillar, Cocoon, Butterfly} <br>Bug_forms; <br>struct thing { <br>Species it; <br>union { </p> <p>Tree_forms tree; <br>Bug_forms bug; <br>} form; <br>}; <br>struct thing foo = {Tree, {Acorn}}; <br>褰撴墦寮榪欎釜寮鍏蟲椂錛屾墽琛?p foo 鍛戒護鍚庯紝浼氬涓嬫樉紺猴細 <br>$1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}} <br>褰撳叧闂繖涓紑鍏蟲椂錛屾墽琛?p foo 鍛戒護鍚庯紝浼氬涓嬫樉紺猴細 <br>$1 = {it = Tree, form = {...}} <br>show print union <br>鏌ョ湅鑱斿悎浣撴暟鎹殑鏄劇ず鏂瑰紡 <br>set print object <br>鍦–++涓紝濡傛灉涓涓璞℃寚閽堟寚鍚戝叾媧劇敓綾伙紝濡傛灉鎵撳紑榪欎釜閫夐」錛孏DB浼氳嚜鍔ㄦ寜鐓ц櫄鏂規硶<br>璋冪敤鐨勮鍒欐樉紺鴻緭鍑猴紝濡傛灉鍏抽棴榪欎釜閫夐」鐨勮瘽錛孏DB灝變笉綆¤櫄鍑芥暟琛ㄤ簡銆傝繖涓夐」榛樿鏄?br>off銆?<br>show print object <br>鏌ョ湅瀵硅薄閫夐」鐨勮緗?<br>set print static-members <br>榪欎釜閫夐」琛ㄧず錛屽綋鏄劇ず涓涓狢++瀵硅薄涓殑鍐呭鏄紝鏄惁鏄劇ず鍏朵腑鐨勯潤鎬佹暟鎹垚鍛樸傞粯璁ゆ槸<br>on銆?<br>show print static-members <br>鏌ョ湅闈欐佹暟鎹垚鍛橀夐」璁劇疆銆?<br>set print vtbl <br>褰撴閫夐」鎵撳紑鏃訛紝GDB灝嗙敤姣旇緝瑙勬暣鐨勬牸寮忔潵鏄劇ず铏氬嚱鏁拌〃鏃躲傚叾榛樿鏄叧闂殑銆?<br>show print vtbl <br>鏌ョ湅铏氬嚱鏁版樉紺烘牸寮忕殑閫夐」銆?<br>鍏佸巻鍙茶褰?<br>褰撲綘鐢℅DB鐨刾rint鏌ョ湅紼嬪簭榪愯鏃剁殑鏁版嵁鏃訛紝浣犳瘡涓涓猵rint閮戒細琚獹DB璁板綍涓嬫潵銆侴DB<br>浼氫互$1, $2, $3 .....榪欐牱鐨勬柟寮忎負浣犳瘡涓涓猵rint鍛戒護緙栦笂鍙楓備簬鏄紝浣犲彲浠ヤ嬌鐢ㄨ繖涓紪鍙瘋闂?br>浠ュ墠鐨勮〃杈懼紡錛屽$1銆傝繖涓姛鑳芥墍甯︽潵鐨勫ソ澶勬槸錛屽鏋滀綘鍏堝墠杈撳叆浜嗕竴涓瘮杈冮暱鐨勮〃杈懼紡錛?br>濡傛灉浣犺繕鎯蟲煡鐪嬭繖涓〃杈懼紡鐨勫鹼紝浣犲彲浠ヤ嬌鐢ㄥ巻鍙茶褰曟潵璁塊棶錛岀渷鍘諱簡閲嶅杈撳叆銆?</p> <p>涔濄丟DB鐜鍙橀噺 <br>浣犲彲浠ュ湪GDB鐨勮皟璇曠幆澧冧腑瀹氫箟鑷繁鐨勫彉閲忥紝鐢ㄦ潵淇濆瓨涓浜涜皟璇曠▼搴忎腑鐨勮繍琛屾暟鎹傝瀹?br>涔変竴涓狦DB鐨勫彉閲忓緢綆鍗曞彧闇銆備嬌鐢℅DB鐨剆et鍛戒護銆侴DB鐨勭幆澧冨彉閲忓拰UNIX涓鏍鳳紝<br>涔熸槸浠?璧峰ご銆傚錛?<br>set $foo = *object_ptr <br>浣跨敤鐜鍙橀噺鏃訛紝GDB浼氬湪浣犵涓嬈′嬌鐢ㄦ椂鍒涘緩榪欎釜鍙橀噺錛岃屽湪浠ュ悗鐨勪嬌鐢ㄤ腑錛屽垯鐩存帴瀵?br>鍏惰腸鍊箋傜幆澧冨彉閲忔病鏈夌被鍨嬶紝浣犲彲浠ョ粰鐜鍙橀噺瀹氫箟浠諱竴鐨勭被鍨嬨傚寘鎷粨鏋勪綋鍜屾暟緇勩?<br>show convenience <br>璇ュ懡浠ゆ煡鐪嬪綋鍓嶆墍璁劇疆鐨勬墍鏈夌殑鐜鍙橀噺銆?<br>榪欐槸涓涓瘮杈冨己澶х殑鍔熻兘錛岀幆澧冨彉閲忓拰紼嬪簭鍙橀噺鐨勪氦浜掍嬌鐢紝灝嗕嬌寰楃▼搴忚皟璇曟洿涓虹伒媧諱究鎹楓?br>渚嬪錛?<br>set $i = 0 <br>print bar[$i++]->contents <br>浜庢槸錛屽綋浣犲氨涓嶅繀錛宲rint bar[0]->contents, print bar[1]->contents鍦拌緭鍏ュ懡浠や簡銆傝緭鍏ヨ繖鏍風殑<br>鍛戒護鍚庯紝鍙敤鏁插洖杞︼紝閲嶅鎵ц涓婁竴鏉¤鍙ワ紝鐜鍙橀噺浼氳嚜鍔ㄧ瘡鍔狅紝浠庤屽畬鎴愰愪釜杈撳嚭鐨勫姛<br>鑳姐?<br>鍗併佹煡鐪嬪瘎瀛樺櫒 <br>瑕佹煡鐪嬪瘎瀛樺櫒鐨勫鹼紝寰堢畝鍗曪紝鍙互浣跨敤濡備笅鍛戒護錛?<br>info registers <br>鏌ョ湅瀵勫瓨鍣ㄧ殑鎯呭喌銆傦紙闄や簡嫻偣瀵勫瓨鍣級 <br>info all-registers <br>鏌ョ湅鎵鏈夊瘎瀛樺櫒鐨勬儏鍐點傦紙鍖呮嫭嫻偣瀵勫瓨鍣級 <br>info registers <br>鏌ョ湅鎵鎸囧畾鐨勫瘎瀛樺櫒鐨勬儏鍐點?<br>瀵勫瓨鍣ㄤ腑鏀劇疆浜嗙▼搴忚繍琛屾椂鐨勬暟鎹紝姣斿紼嬪簭褰撳墠榪愯鐨勬寚浠ゅ湴鍧錛坕p錛夛紝紼嬪簭鐨勫綋鍓嶅爢鏍?br>鍦板潃錛坰p錛夌瓑絳夈備綘鍚屾牱鍙互浣跨敤print鍛戒護鏉ヨ闂瘎瀛樺櫒鐨勬儏鍐碉紝鍙渶瑕佸湪瀵勫瓨鍣ㄥ悕瀛楀墠<br>鍔犱竴涓?絎﹀彿灝卞彲浠ヤ簡銆傚錛歱 $eip銆?</p> <p>鏀瑰彉紼嬪簭鐨勬墽琛?<br>鈥斺斺斺斺斺斺?<br>涓鏃︿嬌鐢℅DB鎸備笂琚皟璇曠▼搴忥紝褰撶▼搴忚繍琛岃搗鏉ュ悗錛屼綘鍙互鏍規嵁鑷繁鐨勮皟璇曟濊礬鏉ュ姩鎬佸湴<br>鍦℅DB涓洿鏀瑰綋鍓嶈璋冭瘯紼嬪簭鐨勮繍琛岀嚎璺垨鏄叾鍙橀噺鐨勫鹼紝榪欎釜寮哄ぇ鐨勫姛鑳借兘澶熻浣犳洿濂?br>鐨勮皟璇曚綘鐨勭▼搴忥紝姣斿錛屼綘鍙互鍦ㄧ▼搴忕殑涓嬈¤繍琛屼腑璧伴亶紼嬪簭鐨勬墍鏈夊垎鏀?<br>涓銆佷慨鏀瑰彉閲忓?<br>淇敼琚皟璇曠▼搴忚繍琛屾椂鐨勫彉閲忓鹼紝鍦℅DB涓緢瀹規槗瀹炵幇錛屼嬌鐢℅DB鐨刾rint鍛戒護鍗沖彲瀹屾垚銆?br>濡傦細 <br>(gdb) print x=4 <br>x=4榪欎釜琛ㄨ揪寮忔槸C/C++鐨勮娉曪紝鎰忎負鎶婂彉閲弜鐨勫間慨鏀逛負4錛屽鏋滀綘褰撳墠璋冭瘯鐨勮璦鏄?br>Pascal錛岄偅涔堜綘鍙互浣跨敤Pascal鐨勮娉曪細x:=4銆?<br>鍦ㄦ煇浜涙椂鍊欙紝寰堟湁鍙兘浣犵殑鍙橀噺鍜孏DB涓殑鍙傛暟鍐茬獊錛屽錛?<br>(gdb) whatis width <br>type = double <br>(gdb) p width <br>$4 = 13 <br>(gdb) set width=47 <br>Invalid syntax in expression. <br>鍥犱負錛宻et width鏄疓DB鐨勫懡浠わ紝鎵浠ワ紝鍑虹幇浜?#8220;Invalid syntax in expression”鐨勮緗敊璇紝<br>姝ゆ椂錛屼綘鍙互浣跨敤set var鍛戒護鏉ュ憡璇塆DB錛寃idth涓嶆槸浣燝DB鐨勫弬鏁幫紝鑰屾槸紼嬪簭鐨勫彉閲忓悕錛?br>濡傦細 <br>(gdb) set var width=47 <br>鍙﹀錛岃繕鍙兘鏈変簺鎯呭喌錛孏DB騫朵笉鎶ュ憡榪欑閿欒錛屾墍浠ヤ繚闄╄搗瑙侊紝鍦ㄤ綘鏀瑰彉紼嬪簭鍙橀噺鍙栧?br>鏃訛紝鏈濂介兘浣跨敤set var鏍煎紡鐨凣DB鍛戒護銆?<br>浜屻佽煩杞墽琛?<br>涓鑸潵璇達紝琚皟璇曠▼搴忎細鎸夌収紼嬪簭浠g爜鐨勮繍琛岄『搴忎緷嬈℃墽琛屻侴DB鎻愪緵浜嗕貢搴忔墽琛岀殑鍔熻兘錛?br>涔熷氨鏄錛孏DB鍙互淇敼紼嬪簭鐨勬墽琛岄『搴忥紝鍙互璁╃▼搴忔墽琛岄殢鎰忚煩璺冦傝繖涓姛鑳藉彲浠ョ敱GDB<br>鐨刯ump鍛戒護鏉ュ畬錛?<br>jump </p> <p>鎸囧畾涓嬩竴鏉¤鍙ョ殑榪愯鐐廣傚彲浠ユ槸鏂囦歡鐨勮鍙鳳紝鍙互鏄痜ile:line鏍煎紡錛屽彲浠ユ槸+num榪欑鍋?br>縐婚噺鏍煎紡銆傝〃寮忕潃涓嬩竴鏉¤繍琛岃鍙ヤ粠鍝噷寮濮嬨?<br>jump <br>榪欓噷鐨?<br>鏄唬鐮佽鐨勫唴瀛樺湴鍧銆?<br>娉ㄦ剰錛宩ump鍛戒護涓嶄細鏀瑰彉褰撳墠鐨勭▼搴忔爤涓殑鍐呭錛屾墍浠ワ紝褰撲綘浠庝竴涓嚱鏁拌煩鍒板彟涓涓嚱鏁?br>鏃訛紝褰撳嚱鏁拌繍琛屽畬榪斿洖鏃惰繘琛屽脊鏍堟搷浣滄椂蹇呯劧浼氬彂鐢熼敊璇紝鍙兘緇撴灉榪樻槸闈炲父濂囨殑錛岀敋鑷?br>浜庝駭鐢熺▼搴廋ore Dump銆傛墍浠ユ渶濂芥槸鍚屼竴涓嚱鏁頒腑榪涜璺寵漿銆?<br>鐔熸倝姹囩紪鐨勪漢閮界煡閬擄紝紼嬪簭榪愯鏃訛紝鏈変竴涓瘎瀛樺櫒鐢ㄤ簬淇濆瓨褰撳墠浠g爜鎵鍦ㄧ殑鍐呭瓨鍦板潃銆傛墍浠ワ紝<br>jump鍛戒護涔熷氨鏄敼鍙樹簡榪欎釜瀵勫瓨鍣ㄤ腑鐨勫箋備簬鏄紝浣犲彲浠ヤ嬌鐢?#8220;set $pc”鏉ユ洿鏀硅煩杞墽琛?br>鐨勫湴鍧銆傚錛?<br>set $pc = 0x485 <br>涓夈佷駭鐢熶俊鍙烽噺 <br>浣跨敤singal鍛戒護錛屽彲浠ヤ駭鐢熶竴涓俊鍙烽噺緇欒璋冭瘯鐨勭▼搴忋傚錛氫腑鏂俊鍙稢trl+C銆傝繖闈炲父鏂逛究<br>浜庣▼搴忕殑璋冭瘯錛屽彲浠ュ湪紼嬪簭榪愯鐨勪換鎰忎綅緗緗柇鐐癸紝騫跺湪璇ユ柇鐐圭敤GDB浜х敓涓涓俊鍙烽噺錛?br>榪欑綺劇‘鍦板湪鏌愬浜х敓淇″彿闈炲父鏈夊埄紼嬪簭鐨勮皟璇曘?<br>璇硶鏄細signal 錛孶NIX鐨勭郴緇熶俊鍙烽噺閫氬父浠?鍒?5銆傛墍浠ュ彇鍊間篃鍦ㄨ繖涓寖鍥淬?<br>single鍛戒護鍜宻hell鐨刱ill鍛戒護涓嶅悓錛岀郴緇熺殑kill鍛戒護鍙戜俊鍙風粰琚皟璇曠▼搴忔椂錛屾槸鐢盙DB鎴?br>鑾風殑錛岃宻ingle鍛戒護鎵鍙戝嚭涓淇″彿鍒欐槸鐩存帴鍙戠粰琚皟璇曠▼搴忕殑銆?<br>鍥涖佸己鍒跺嚱鏁拌繑鍥?<br>濡傛灉浣犵殑璋冭瘯鏂偣鍦ㄦ煇涓嚱鏁頒腑錛屽茍榪樻湁璇彞娌℃湁鎵ц瀹屻備綘鍙互浣跨敤return鍛戒護寮哄埗鍑芥暟<br>蹇界暐榪樻病鏈夋墽琛岀殑璇彞騫惰繑鍥炪?<br>return <br>return <br>浣跨敤return鍛戒護鍙栨秷褰撳墠鍑芥暟鐨勬墽琛岋紝騫剁珛鍗寵繑鍥烇紝濡傛灉鎸囧畾浜嗭紝閭d箞璇ヨ〃杈懼紡鐨勫間細琚<br>浣滃嚱鏁扮殑榪斿洖鍊箋?<br>浜斻佸己鍒惰皟鐢ㄥ嚱鏁?</p> <p>call <br>琛ㄨ揪寮忎腑鍙互涓鏄嚱鏁幫紝浠ユ杈懼埌寮哄埗璋冪敤鍑芥暟鐨勭洰鐨勩傚茍鏄劇ず鍑芥暟鐨勮繑鍥炲鹼紝濡傛灉鍑芥暟榪?br>鍥炲兼槸void錛岄偅涔堝氨涓嶆樉紺恒?<br>鍙︿竴涓浉浼肩殑鍛戒護涔熷彲浠ュ畬鎴愯繖涓鍔熻兘鈥斺攑rint錛宲rint鍚庨潰鍙互璺熻〃杈懼紡錛屾墍浠ヤ篃鍙互鐢ㄤ粬<br>鏉ヨ皟鐢ㄥ嚱鏁幫紝print鍜宑all鐨勪笉鍚屾槸錛屽鏋滃嚱鏁拌繑鍥瀡oid錛宑all鍒欎笉鏄劇ず錛宲rint鍒欐樉紺哄嚱鏁拌繑<br>鍥炲鹼紝騫舵妸璇ュ煎瓨鍏ュ巻鍙叉暟鎹腑銆?<br>鍦ㄤ笉鍚岃璦涓嬌鐢℅DB <br>鈥斺斺斺斺斺斺斺斺斺?<br>GDB鏀寔涓嬪垪璇█錛欳, C++, Fortran, PASCAL, Java, Chill, assembly, 鍜?Modula-2銆備竴鑸<br>鏉ワ紝GDB浼氭牴鎹綘鎵璋冭瘯鐨勭▼搴忔潵紜畾褰撶劧鐨勮皟璇曡璦錛屾瘮濡傦細鍙戠幇鏂囦歡鍚嶅悗緙涓?#8220;.c”<br>鐨勶紝GDB浼氳涓烘槸C紼嬪簭銆傛枃浠跺悕鍚庣紑涓?#8220;.C, .cc, .cp, .cpp, .cxx, .c++”鐨勶紝GDB浼氳涓烘槸<br>C++紼嬪簭銆傝屽悗緙鏄?#8220;.f, .F”鐨勶紝GDB浼氳涓烘槸Fortran紼嬪簭錛岃繕鏈夛紝鍚庣紑涓哄鏋滄槸“.s, .S”<br>鐨勪細璁や負鏄眹緙栬璦銆?<br>涔熷氨鏄錛孏DB浼氭牴鎹綘鎵璋冭瘯鐨勭▼搴忕殑璇█錛屾潵璁劇疆鑷繁鐨勮璦鐜錛屽茍璁〨DB鐨勫懡浠?br>璺熺潃璇█鐜鐨勬敼鍙樿屾敼鍙樸傛瘮濡備竴浜汫DB鍛戒護闇瑕佺敤鍒拌〃杈懼紡鎴栧彉閲忔椂錛岃繖浜涜〃杈懼紡鎴?br>鍙橀噺鐨勮娉曪紝瀹屽叏鏄牴鎹綋鍓嶇殑璇█鐜鑰屾敼鍙樼殑銆備緥濡侰/C++涓鎸囬拡鐨勮娉曟槸*p錛岃屽湪<br>Modula-2涓垯鏄痯^銆傚茍涓旓紝濡傛灉浣犲綋鍓嶇殑紼嬪簭鏄敱鍑犵涓嶅悓璇█涓鍚岀紪璇戞垚鐨勶紝閭e埌鍦ㄨ皟<br>璇曡繃紼嬩腑錛孏DB涔熻兘鏍規嵁涓嶅悓鐨勮璦鑷姩鍦板垏鎹㈣璦鐜銆傝繖縐嶈窡鐫璇█鐜鑰屾敼鍙樼殑鍔?br>鑳斤紝鐪熸槸浣撹創寮鍙戜漢鍛樼殑涓縐嶈璁°?<br>涓嬮潰鏄嚑涓浉鍏充簬GDB璇█鐜鐨勫懡浠わ細 <br>show language <br>鏌ョ湅褰撳墠鐨勮璦鐜銆傚鏋淕DB涓嶈兘璇嗕負浣犳墍璋冭瘯鐨勭紪紼嬭璦錛岄偅涔堬紝C璇█琚涓烘槸榛?br>璁ょ殑鐜銆?<br>info frame <br>鏌ョ湅褰撳墠鍑芥暟鐨勭▼搴忚璦銆?<br>info source <br>鏌ョ湅褰撳墠鏂囦歡鐨勭▼搴忚璦銆?<br>濡傛灉GDB娌℃湁媯嫻嬪嚭褰撳墠鐨勭▼搴忚璦錛岄偅涔堜綘涔熷彲浠ユ墜鍔ㄨ緗綋鍓嶇殑紼嬪簭璇█銆備嬌鐢╯et <br>language鍛戒護鍗沖彲鍋氬埌銆?<br>褰搒et language鍛戒護鍚庝粈涔堜篃涓嶈窡鐨勮瘽錛屼綘鍙互鏌ョ湅GDB鎵鏀寔鐨勮璦縐嶇被錛?</p> <p>(gdb) set language <br>The currently understood settings are: <br>local or auto Automatic setting based on source file <br>c Use the C language <br>c++ Use the C++ language <br>asm Use the Asm language <br>chill Use the Chill language <br>fortran Use the Fortran language <br>java Use the Java language <br>modula-2 Use the Modula-2 language <br>pascal Use the Pascal language <br>scheme Use the Scheme language <br>浜庢槸浣犲彲浠ュ湪set language鍚庤窡涓婅鍒楀嚭鏉ョ殑紼嬪簭璇█鍚嶏紝鏉ヨ緗綋鍓嶇殑璇█鐜銆?<br>鍚庤 <br>鈥斺?<br>GDB鏄竴涓己澶х殑鍛戒護琛岃皟璇曞伐鍏楓傚ぇ瀹剁煡閬撳懡浠よ鐨勫己澶у氨鏄湪浜庯紝鍏跺彲浠ュ艦鎴愭墽琛屽簭<br>鍒楋紝褰㈡垚鑴氭湰銆俇NIX涓嬬殑杞歡鍏ㄦ槸鍛戒護琛岀殑錛岃繖緇欑▼搴忓紑鍙戞彁浠d緵浜嗘瀬澶х殑渚垮埄錛屽懡浠よ<br>杞歡鐨勪紭鍔垮湪浜庯紝瀹冧滑鍙互闈炲父瀹規槗鐨勯泦鎴愬湪涓璧鳳紝浣跨敤鍑犱釜綆鍗曠殑宸叉湁宸ュ叿鐨勫懡浠わ紝灝卞彲<br>浠ュ仛鍑轟竴涓潪甯稿己澶х殑鍔熻兘銆?<br>浜庢槸UNIX涓嬬殑杞歡姣擶indows涓嬬殑杞歡鏇磋兘鏈夋満鍦扮粨鍚堬紝鍚勮嚜鍙戞尌鍚勮嚜鐨勯暱澶勶紝緇勫悎鎴?br>鏇翠負寮哄姴鐨勫姛鑳姐傝學indows涓嬬殑鍥懼艦杞歡鍩烘湰涓婃槸鍚勮嚜涓鴻惀錛屼簰鐩鎬笉鑳借皟鐢紝寰堜笉鍒╀簬<br>鍚勭杞歡鐨勭浉浜掗泦鎴愩傚湪榪欓噷騫朵笉鏄鍜學indows鍋氫釜浠涔堟瘮杈冿紝鎵璋?#8220;瀵告湁鎵闀匡紝灝烘湁<br>鎵鐭?#8221;錛屽浘褰㈠寲宸ュ叿榪樻槸鏈変笉濡傚懡浠よ鐨勫湴鏂廣傦紙鐪嬪埌榪欏彞璇濇椂錛屽笇鏈涘悇浣嶅崈涓囧啀涔熶笉瑕佽涓?br>鎴戝氨鏄?#8220;閯欒鍥懼艦鐣岄潰”錛屽拰鎴戞姮鏉犱簡 錛?<br>鎴戞槸鏍規嵁鐗堟湰涓?.1.1鐨凣DB鎵鍐欑殑榪欑瘒鏂囩珷錛屾墍浠ュ彲鑳芥湁浜涘姛鑳藉凡琚慨鏀癸紝鎴栨槸鍙堟湁鏇?br>涓哄己鍔茬殑鍔熻兘銆傝屼笖錛屾垜鍐欏緱闈炲父浠撲績錛屽啓寰楁瘮杈冪畝鐣ワ紝騫朵笖錛屽叾涓垜宸茬粡鐪嬪埌鏈夎澶氶敊鍒?br>瀛椾簡錛堟垜鐢ㄤ簲絎旓紝鎵浠ラ敊瀛楄浣犵湅涓嶆噦錛夛紝鎵浠ワ紝鎴戝湪榪欓噷瀵規垜鏂囦腑鐨勫樊閿欒〃紺轟竾鍒嗙殑姝夋剰銆?<br>鏂囦腑鎵緗楀垪鐨凣DB鐨勫姛鑳芥椂錛屾垜鍙槸緗楀垪浜嗕竴浜涘甫鐢ㄧ殑GDB鐨勫懡浠ゅ拰浣跨敤鏂規硶錛屽叾瀹烇紝<br>鎴戣繖閲屽彧璁茶堪鐨勫姛鑳藉ぇ綰﹀彧鍗燝DB鎵鏈夊姛鑳界殑60%鍚э紝璇︾粏鐨勬枃妗o紝榪樻槸璇鋒煡鐪婫DB鐨?br>甯姪鍜屼嬌鐢ㄦ墜鍐屽惂錛屾垨璁革紝榪囨鏃墮棿錛屽鏋滄垜鏈夌┖錛屾垜鍐嶅啓涓綃嘒DB鐨勯珮綰т嬌鐢ㄣ?<br>鎴戜釜浜洪潪甯稿枩嬈DB鐨勮嚜鍔ㄨ皟璇曠殑鍔熻兘錛岃繖涓姛鑳界湡鐨勫緢寮哄ぇ錛岃瘯鎯籌紝鎴戝湪UNIX涓嬪啓涓?br>鑴氭湰錛岃鑴氭湰鑷姩緙栬瘧鎴戠殑紼嬪簭錛岃鑷姩璋冭瘯錛屽茍鎶婄粨鏋滄姤鍛婂嚭鏉ワ紝璋冭瘯鎴愬姛錛岃嚜鍔╟heckin<br>婧愮爜搴撱備竴涓懡浠わ紝緙栬瘧甯︾潃璋冭瘯甯︾潃checkin錛屽鐖藉晩銆傚彧鏄疓DB瀵硅嚜鍔ㄥ寲璋冭瘯鐩墠鏀寔<br>榪樹笉鏄緢鎴愮啛錛屽彧鑳藉疄鐜板崐鑷姩鍖栵紝鐪熷績鏈熸湜鐫GDB鐨勮嚜鍔ㄥ寲璋冭瘯鍔熻兘鐨勬垚鐔熴?</p> <p>濡傛灉鍚勪綅瀵笹DB鎴栨槸鍒殑鎶鏈棶棰樻湁鍏磋叮鐨勮瘽錛屾榪庡拰鎴戣璁轟氦嫻併傛湰浜虹洰鍓嶄富瑕佸湪UNIX<br>涓嬪仛浜у搧杞歡鐨勫紑鍙戯紝鎵浠ワ紝瀵筓NIX涓嬬殑杞歡寮鍙戞瘮杈冪啛鎮夛紝褰撶劧錛屼笉鍗曞崟鏄妧鏈紝瀵硅蔣<br>浠跺伐紼嬪疄鏂斤紝杞歡璁捐錛岀郴緇熷垎鏋愶紝欏圭洰綆$悊鎴戜篃鐣ユ湁蹇冨緱銆傛榪庡ぇ瀹舵壘鎴戜氦嫻侊紝錛圦Q鏄細<br>753640錛孧SN鏄細<a href="mailto:haoel@hotmail.com"><font color=#336699>haoel@hotmail.com</font></a>錛?<br>RelatedEntries錛?<br>鏂囦歡鎿嶄綔 - 10 28, 2003 <br>OSW:12.CVS璁劇疆涓庡簲鐢?- 10 28, 2003 <br>MySQL AB Acquires Alzato - 10 24, 2003 <br>cvs - 10 24, 2003 <br>浣跨敤CVS榪涜鐗堟湰綆$悊 - 10 23, 2003</p> <img src ="http://m.shnenglu.com/true/aggbug/71749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2009-01-11 20:21 <a href="http://m.shnenglu.com/true/archive/2009/01/11/71749.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>std::queue鐨刦ront鐨勯棶棰?/title><link>http://m.shnenglu.com/true/archive/2008/06/10/52731.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Tue, 10 Jun 2008 03:39:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/06/10/52731.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/52731.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/06/10/52731.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/52731.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/52731.html</trackback:ping><description><![CDATA[<p> </p> msdn涓婄殑瑙f瀽錛?br> <pre><strong>value_type& front( );</strong>  <strong>const value_type& front( ) const;</strong></pre> <p>Returns a reference to the first element at the front of the queue.<br><br>璇風湅涓嬮潰紺轟緥浠g爜<br>queue<int> intqueue;<br>intqueue.push(1);<br>intqueue.push(2);<br>int head = intqueue.front();//int&鍙互闅愬紡杞崲涓篿nt?<br>intqueue.pop();//灝嗗澶村厓绱犲脊鍑洪槦鍒?br>cout << head << endl;//杈撳嚭1錛宖ront搴旇榪斿洖鐨勬槸"寮曠敤",浣唒op涔嬪悗錛屼負浠涔坔ead鐨勮緭鍑鴻繕鏈夋晥(寮曠敤榪樻湁鏁堬紵)錛?br><br></p> <img src ="http://m.shnenglu.com/true/aggbug/52731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-06-10 11:39 <a href="http://m.shnenglu.com/true/archive/2008/06/10/52731.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>epoll()瀹炵幇鍒嗘瀽銆怹T銆?/title><link>http://m.shnenglu.com/true/archive/2008/06/01/51848.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sun, 01 Jun 2008 14:55:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/06/01/51848.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/51848.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/06/01/51848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/51848.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/51848.html</trackback:ping><description><![CDATA[<div id="hvzpftn" class=tit>epoll()瀹炵幇鍒嗘瀽<br><br><a >http://hi.baidu.com/rwen2012/blog/item/0f2f8c13eb7f3621dd5401a8.html</a></div> <div id="hvzpftn" class=date>2007-07-04 17:50</div> <table style="TABLE-LAYOUT: fixed"> <tbody> <tr> <td> <div id="hvzpftn" class=cnt id=blog_text>                                            <br>/*<br>* This structure is stored inside the "private_data" member of the file<br>* structure and rapresent the main data sructure for the eventpoll<br>* interface.<br>*/<br>struct eventpoll {<br>   /* Protect the this structure access */<br>   rwlock_t lock;<br></div> </td> </tr> </tbody> </table> <img src ="http://m.shnenglu.com/true/aggbug/51848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-06-01 22:55 <a href="http://m.shnenglu.com/true/archive/2008/06/01/51848.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍦↙inux涓婂紑鍙戠綉緇滄湇鍔″櫒鐨勪竴浜涚浉鍏崇粏鑺?poll涓巈poll[杞琞http://m.shnenglu.com/true/archive/2008/06/01/51843.htmltruetrueSun, 01 Jun 2008 14:15:00 GMThttp://m.shnenglu.com/true/archive/2008/06/01/51843.htmlhttp://m.shnenglu.com/true/comments/51843.htmlhttp://m.shnenglu.com/true/archive/2008/06/01/51843.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/51843.htmlhttp://m.shnenglu.com/true/services/trackbacks/51843.htmlhttp://hi.baidu.com/xproduct/blog/calendar/200706
2007-06-30 23:58
闅忕潃2.6鍐呮牳瀵筫poll鐨勫畬鍏ㄦ敮鎸侊紝緗戠粶涓婂緢澶氱殑鏂囩珷鍜岀ず渚嬩唬鐮侀兘鎻愪緵浜嗚繖鏍蜂竴涓俊鎭細浣跨敤epoll浠f浛浼犵粺鐨刾oll鑳界粰緗戠粶鏈嶅姟搴旂敤甯︽潵鎬ц兘涓?鐨勬彁鍗囥備絾澶у鏂囩珷閲屽叧浜庢ц兘鎻愬崌鐨勫師鍥犺В閲婄殑杈冨皯錛岃繖閲屾垜灝嗚瘯鍒嗘瀽涓涓嬪唴鏍革紙2.6.21.1錛変唬鐮佷腑poll涓巈poll鐨勫伐浣滃師鐞嗭紝鐒跺悗鍐嶉氳繃涓浜?嫻嬭瘯鏁版嵁鏉ュ姣斿叿浣撴晥鏋溿?br>
   POLL錛?br>
   鍏堣poll錛宲oll鎴杝elect涓哄ぇ閮ㄥ垎Unix/Linux紼嬪簭鍛樻墍鐔熸倝錛岃繖淇╀釜涓滆タ鍘熺悊綾諱技錛屾ц兘涓婁篃涓嶅瓨鍦ㄦ槑鏄懼樊寮傦紝浣唖elect瀵規墍鐩戞帶鐨勬枃浠舵弿榪扮鏁伴噺鏈夐檺鍒訛紝鎵浠ヨ繖閲岄夌敤poll鍋氳鏄庛?br>
   poll鏄竴涓郴緇熻皟鐢紝鍏跺唴鏍稿叆鍙e嚱鏁頒負sys_poll錛宻ys_poll鍑犱箮涓嶅仛浠諱綍澶勭悊鐩存帴璋冪敤do_sys_poll錛宒o_sys_poll鐨勬墽琛岃繃紼嬪彲浠ュ垎涓轟笁涓儴鍒嗭細

   1錛屽皢鐢ㄦ埛浼犲叆鐨刾ollfd鏁扮粍鎷瘋礉鍒板唴鏍哥┖闂達紝鍥犱負鎷瘋礉鎿嶄綔鍜屾暟緇勯暱搴︾浉鍏籌紝鏃墮棿涓婅繖鏄竴涓狾錛坣錛夋搷浣滐紝榪欎竴姝ョ殑浠g爜鍦╠o_sys_poll涓寘鎷粠鍑芥暟寮濮嬪埌璋冪敤do_poll鍓嶇殑閮ㄥ垎銆?br>
   2錛屾煡璇㈡瘡涓枃浠舵弿榪扮瀵瑰簲璁懼鐨勭姸鎬侊紝濡傛灉璇ヨ澶囧皻鏈氨緇紝鍒欏湪璇ヨ澶囩殑絳夊緟闃熷垪涓姞鍏ヤ竴欏瑰茍緇х畫鏌ヨ涓嬩竴璁懼鐨勭姸鎬併傛煡璇㈠畬鎵鏈夎澶囧悗濡傛灉娌℃湁涓涓 澶囧氨緇紝榪欐椂鍒欓渶瑕佹寕璧峰綋鍓嶈繘紼嬬瓑寰咃紝鐩村埌璁懼灝辯華鎴栬呰秴鏃訛紝鎸傝搗鎿嶄綔鏄氳繃璋冪敤schedule_timeout鎵ц鐨勩傝澶囧氨緇悗榪涚▼琚氱煡緇х畫榪?琛岋紝榪欐椂鍐嶆閬嶅巻鎵鏈夎澶囷紝浠ユ煡鎵懼氨緇澶囥傝繖涓姝ュ洜涓轟袱嬈¢亶鍘嗘墍鏈夎澶囷紝鏃墮棿澶嶆潅搴︿篃鏄疧錛坣錛夛紝榪欓噷闈笉鍖呮嫭絳夊緟鏃墮棿銆傜浉鍏充唬鐮佸湪do_poll鍑芥暟 涓?br>
   3錛屽皢鑾峰緱鐨勬暟鎹紶閫佸埌鐢ㄦ埛絀洪棿騫舵墽琛岄噴鏀懼唴瀛樺拰鍓ョ絳夊緟闃熷垪絳夊杽鍚庡伐浣滐紝鍚戠敤鎴風┖闂存嫹璐濇暟鎹笌鍓ョ絳夊緟闃熷垪絳夋搷浣滅殑鐨勬椂闂村鏉傚害鍚屾牱鏄疧錛坣錛夛紝鍏蜂綋浠g爜鍖呮嫭do_sys_poll鍑芥暟涓皟鐢╠o_poll鍚庡埌緇撴潫鐨勯儴鍒嗐?br>
   EPOLL錛?br>
   鎺ヤ笅鏉ュ垎鏋恊poll錛屼笌poll/select涓嶅悓錛宔poll涓嶅啀鏄竴涓崟鐙殑緋葷粺璋冪敤錛岃屾槸鐢眅poll_create/epoll_ctl/epoll_wait涓変釜緋葷粺璋冪敤緇勬垚錛屽悗闈㈠皢浼氱湅鍒拌繖鏍峰仛鐨勫ソ澶勩?br>
   鍏堟潵鐪媠ys_epoll_create(epoll_create瀵瑰簲鐨勫唴鏍稿嚱鏁幫級錛岃繖涓嚱鏁頒富瑕佹槸鍋氫竴浜涘噯澶囧伐浣滐紝姣斿鍒涘緩鏁版嵁緇撴瀯錛屽垵濮嬪寲鏁版嵁騫舵渶緇堣繑鍥炰竴涓枃浠舵弿榪扮錛堣〃紺烘柊鍒涘緩鐨勮櫄鎷焑poll鏂囦歡錛夛紝榪欎釜鎿嶄綔鍙互璁や負鏄竴涓浐瀹氭椂闂寸殑鎿嶄綔銆?br>
       epoll鏄仛涓轟竴涓櫄鎷熸枃浠剁郴緇熸潵瀹炵幇鐨勶紝榪欐牱鍋氳嚦灝戞湁浠ヤ笅涓や釜濂藉錛?br>
       1錛屽彲浠ュ湪鍐呮牳閲岀淮鎶や竴浜涗俊鎭紝榪欎簺淇℃伅鍦ㄥ嬈poll_wait闂存槸淇濇寔鐨勶紝姣斿鎵鏈夊彈鐩戞帶鐨勬枃浠舵弿榪扮銆?br>
       2錛?epoll鏈韓涔熷彲浠ヨpoll/epoll;

   鍏蜂綋epoll鐨勮櫄鎷熸枃浠剁郴緇熺殑瀹炵幇鍜屾ц兘鍒嗘瀽鏃犲叧錛屼笉鍐嶈禈榪般?br>
   鍦╯ys_epoll_create涓繕鑳界湅鍒頒竴涓粏鑺傦紝灝辨槸epoll_create鐨勫弬鏁皊ize鍦ㄧ幇闃舵鏄病鏈夋剰涔夌殑錛屽彧瑕佸ぇ浜庨浂灝辮銆?br>
   鎺ョ潃鏄痵ys_epoll_ctl(epoll_ctl瀵瑰簲鐨勫唴鏍稿嚱鏁幫級錛岄渶瑕佹槑紜殑鏄瘡嬈¤皟鐢╯ys_epoll_ctl鍙鐞嗕竴涓枃浠舵弿榪扮錛岃繖閲屼富 瑕佹弿榪板綋op涓篍POLL_CTL_ADD鏃剁殑鎵ц榪囩▼錛宻ys_epoll_ctl鍋氫竴浜涘畨鍏ㄦф鏌ュ悗榪涘叆ep_insert錛宔p_insert閲屽皢 ep_poll_callback鍋氫負鍥炴帀鍑芥暟鍔犲叆璁懼鐨勭瓑寰呴槦鍒楋紙鍋囧畾榪欐椂璁懼灝氭湭灝辯華錛夛紝鐢變簬姣忔poll_ctl鍙搷浣滀竴涓枃浠舵弿榪扮錛屽洜姝や篃鍙互 璁や負榪欐槸涓涓狾(1)鎿嶄綔

       ep_poll_callback鍑芥暟寰堝叧閿紝瀹冨湪鎵絳夊緟鐨勮澶囧氨緇悗琚郴緇熷洖鎺夛紝鎵ц涓や釜鎿嶄綔錛?br>
   1錛屽皢灝辯華璁懼鍔犲叆灝辯華闃熷垪錛岃繖涓姝ラ伩鍏嶄簡鍍弍oll閭f牱鍦ㄨ澶囧氨緇悗鍐嶆杞鎵鏈夎澶囨壘灝辯華鑰咃紝闄嶄綆浜嗘椂闂村鏉傚害錛岀敱O錛坣錛夊埌O錛?錛?

   2錛屽敜閱掕櫄鎷熺殑epoll鏂囦歡;

   鏈鍚庢槸sys_epoll_wait錛岃繖閲屽疄闄呮墽琛屾搷浣滅殑鏄痚p_poll鍑芥暟銆傝鍑芥暟絳夊緟灝嗚繘紼嬭嚜韜彃鍏ヨ櫄鎷焑poll鏂囦歡鐨勭瓑寰呴槦鍒楋紝鐩村埌琚敜閱掞紙瑙?涓婇潰ep_poll_callback鍑芥暟鎻忚堪錛夛紝鏈鍚庢墽琛宔p_events_transfer灝嗙粨鏋滄嫹璐濆埌鐢ㄦ埛絀洪棿銆傜敱浜庡彧鎷瘋礉灝辯華璁懼淇℃伅錛屾墍浠ヨ繖 閲岀殑鎷瘋礉鏄竴涓狾(1錛夋搷浣溿?br>
   榪樻湁涓涓浜哄叧蹇冪殑闂灝辨槸epoll瀵笶POLLET鐨勫鐞嗭紝鍗寵竟娌胯Е鍙戠殑澶勭悊錛岀矖鐣ョ湅浠g爜灝辨槸鎶婁竴閮ㄥ垎姘村鉤瑙﹀彂妯″紡涓嬪唴鏍稿仛鐨勫伐浣滀氦緇欑敤鎴鋒潵澶勭悊錛岀洿瑙変笂涓嶄細瀵規ц兘鏈夊お澶у獎鍝嶏紝鎰熷叴瓚g殑鏈嬪弸嬈㈣繋璁ㄨ銆?br>
   POLL/EPOLL瀵規瘮錛?br>
   琛ㄩ潰涓妏oll鐨勮繃紼嬪彲浠ョ湅浣滄槸鐢變竴嬈poll_create/鑻ュ共嬈poll_ctl/涓嬈poll_wait/涓嬈lose絳夌郴緇熻皟鐢ㄦ瀯鎴愶紝 瀹為檯涓奺poll灝唒oll鍒嗘垚鑻ュ共閮ㄥ垎瀹炵幇鐨勫師鍥犳鏄洜涓烘湇鍔″櫒杞歡涓嬌鐢╬oll鐨勭壒鐐癸紙姣斿Web鏈嶅姟鍣級錛?br>
   1錛岄渶瑕佸悓鏃秔oll澶ч噺鏂囦歡鎻忚堪絎?

   2錛屾瘡嬈oll瀹屾垚鍚庡氨緇殑鏂囦歡鎻忚堪絎﹀彧鍗犳墍鏈夎poll鐨勬弿榪扮鐨勫緢灝戜竴閮ㄥ垎銆?br>
   3錛屽墠鍚庡嬈oll璋冪敤瀵規枃浠舵弿榪扮鏁扮粍錛坲fds錛夌殑淇敼鍙槸寰堝皬;

   浼犵粺鐨刾oll鍑芥暟鐩稿綋浜庢瘡嬈¤皟鐢ㄩ兘閲嶈搗鐐夌伓錛屼粠鐢ㄦ埛絀洪棿瀹屾暣璇誨叆ufds錛屽畬鎴愬悗鍐嶆瀹屽叏鎷瘋礉鍒扮敤鎴風┖闂達紝鍙﹀姣忔poll閮介渶瑕佸鎵鏈夎澶囧仛鑷沖皯鍋氫竴嬈″姞鍏ュ拰鍒犻櫎絳夊緟闃熷垪鎿嶄綔錛岃繖浜涢兘鏄綆鏁堢殑鍘熷洜銆?br>
       epoll灝嗕互涓婃儏鍐甸兘緇嗗寲鑰冭檻錛屼笉闇瑕佹瘡嬈¢兘瀹屾暣璇誨叆杈撳嚭ufds錛屽彧闇浣跨敤epoll_ctl璋冩暣鍏朵腑涓灝忛儴鍒嗭紝涓嶉渶瑕佹瘡嬈?epoll_wait閮芥墽琛屼竴嬈″姞鍏ュ垹闄ょ瓑寰呴槦鍒楁搷浣滐紝鍙﹀鏀硅繘鍚庣殑鏈哄埗浣跨殑涓嶅繀鍦ㄦ煇涓澶囧氨緇悗鎼滅儲鏁翠釜璁懼鏁扮粍榪涜鏌ユ壘錛岃繖浜涢兘鑳芥彁楂樻晥鐜囥傚彟澶栨渶鏄?鏄劇殑涓鐐癸紝浠庣敤鎴風殑浣跨敤鏉ヨ錛屼嬌鐢╡poll涓嶅繀姣忔閮借疆璇㈡墍鏈夎繑鍥炵粨鏋滃凡鎵懼嚭鍏朵腑鐨勫氨緇儴鍒嗭紝O錛坣錛夊彉O錛?錛夛紝瀵規ц兘涔熸彁楂樹笉灝戙?br>
   姝ゅ榪欓噷榪樺彂鐜頒竴鐐癸紝鏄笉鏄皢epoll_ctl鏀規垚涓嬈″彲浠ュ鐞嗗涓猣d錛堝儚semctl閭f牱錛変細鎻愰珮浜涜鎬ц兘鍛紵鐗瑰埆鏄湪鍋囪緋葷粺璋冪敤姣旇緝鑰楁椂鐨勫熀紜涓娿備笉榪囧叧浜庣郴緇熻皟鐢ㄧ殑鑰楁椂闂榪樹細鍦ㄤ互鍚庡垎鏋愩?br>
   POLL/EPOLL嫻嬭瘯鏁版嵁瀵規瘮錛?br>
   嫻嬭瘯鐨勭幆澧冿細鎴戝啓浜嗕笁孌典唬鐮佹潵鍒嗗埆妯℃嫙鏈嶅姟鍣紝媧誨姩鐨勫鎴風錛屽兊姝葷殑瀹㈡埛绔紝鏈嶅姟鍣ㄨ繍琛屼簬涓涓嚜緙栬瘧鐨勬爣鍑?.6.11鍐呮牳緋葷粺涓婏紝紜歡涓?PIII933錛屼袱涓鎴風鍚勮嚜榪愯鍦ㄥ彟澶栫殑PC涓婏紝榪欎袱鍙癙C姣旀湇鍔″櫒鐨勭‖浠舵ц兘瑕佸ソ錛屼富瑕佹槸淇濊瘉鑳借交鏄撹鏈嶅姟鍣ㄦ弧杞斤紝涓夊彴鏈哄櫒闂翠嬌鐢ㄤ竴涓?00M浜ゆ崲 鏈鴻繛鎺ャ?br>
   鏈嶅姟鍣ㄦ帴鍙楀茍poll鎵鏈夎繛鎺ワ紝濡傛灉鏈塺equest鍒拌揪鍒欏洖澶嶄竴涓猺esponse錛岀劧鍚庣戶緇璸oll銆?br>
   媧誨姩鐨勫鎴風錛圓ctive Client錛夋ā鎷熻嫢騫插茍鍙戠殑媧誨姩榪炴帴錛岃繖浜涜繛鎺ヤ笉闂存柇鐨勫彂閫佽姹傛帴鍙楀洖澶嶃?br>
   鍍墊鐨勫鎴風錛坺ombie錛夋ā鎷熶竴浜涘彧榪炴帴浣嗕笉鍙戦佽姹傜殑瀹㈡埛绔紝鍏剁洰鐨勫彧鏄崰鐢ㄦ湇鍔″櫒鐨刾oll鎻忚堪絎﹁祫婧愩?br>
       嫻嬭瘯榪囩▼錛氫繚鎸?0涓茍鍙戞椿鍔ㄨ繛鎺ワ紝涓嶆柇鐨勮皟鏁村兊騫跺彂榪炴帴鏁幫紝璁板綍鍦ㄤ笉鍚屾瘮渚嬩笅浣跨敤poll涓巈poll鐨勬ц兘宸埆銆傚兊姝誨茍鍙戣繛鎺ユ暟鏍規嵁姣斾緥鍒嗗埆鏄細0錛?0錛?0錛?0錛?0錛?60錛?20錛?40錛?280錛?560錛?120錛?0240銆?br>
   涓嬪浘涓í杞磋〃紺哄兊姝誨茍鍙戣繛鎺ヤ笌媧誨姩騫跺彂榪炴帴涔嬫瘮錛岀旱杞磋〃紺哄畬鎴?0000嬈¤姹傚洖澶嶆墍鑺辮垂鐨勬椂闂達紝浠ョ涓哄崟浣嶃傜孩鑹茬嚎鏉¤〃紺簆oll鏁版嵁錛岀豢鑹茶〃紺?epoll鏁版嵁銆傚彲浠ョ湅鍑猴紝poll鍦ㄦ墍鐩戞帶鐨勬枃浠舵弿榪扮鏁伴噺澧炲姞鏃訛紝鍏惰楁椂鍛堢嚎鎬у闀匡紝鑰宔poll鍒欑淮鎸佷簡涓涓鉤紼崇殑鐘舵侊紝鍑犱箮涓嶅彈鎻忚堪絎︿釜鏁板獎鍝嶃?br>
   鍦ㄧ洃鎺х殑鎵鏈夊鎴風閮芥槸媧誨姩鏃訛紝poll鐨勬晥鐜囦細鐣ラ珮浜巈poll錛堜富瑕佸湪鍘熺偣闄勮繎錛屽嵆鍍墊騫跺彂榪炴帴涓?鏃訛紝鍥句笂涓嶆槗鐪嬪嚭鏉ワ級錛岀┒绔焑poll瀹炵幇姣攑oll澶嶆潅錛岀洃鎺у皯閲忔弿榪扮騫墮潪瀹冪殑闀?/div>


true 2008-06-01 22:15 鍙戣〃璇勮
]]>
CMake-寮婧愯法騫沖彴鐨勭紪璇戠郴緇?/title><link>http://m.shnenglu.com/true/archive/2008/05/24/50961.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sat, 24 May 2008 08:39:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/05/24/50961.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/50961.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/05/24/50961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/50961.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/50961.html</trackback:ping><description><![CDATA[<blockquote> <p>瀹樼綉錛?a title=http://www.cmake.org/HTML/index.html >http://www.cmake.org/HTML/index.html</a></p> <p>鏈枃涓昏灝濊瘯鐢–Make緙栬瘧婧愪唬鐮佸寘涓殑Demo</p> <p>1.涓嬭澆鏈鏂扮増2.6.0錛屾垜鍦╳indows涓嬭澆鐨勬槸婧愪唬鐮佸寘<a >cmake-2.6.0.zip</a>鍜岄緙栬瘧濂界殑浜岃繘鍒剁増鏈?a >cmake-2.6.0-win32-x86.zip</a>.騫跺垎鍒姞鍘嬪埌dir鐩綍錛堢洰褰曢殢渚垮嵆鍙級錛屽緱鍒癲ir/cmake-2.6.0,dir/cmake-2.6.0-win32-x86涓や釜鏂囦歡澶廣?/p> <p>2.灝哾ir/cmake-2.6.0-win32-x86/bin鍔犲埌path鐜鍙橀噺涓?/p> <p>3.dos紿楀彛涓嬭繘鍏ュ埌dir/cmake-2.6.0涓嬮潰銆?/p> <p>4.cd Example</p> <p>5.mkdir build</p> <p>6.cd build</p> <p>7.cmake ..        (涓や釜鐐硅〃紺哄湪涓婁竴綰х洰褰?</p> <p>涓嬮潰浼氳嚜鍔ㄤ駭鐢熶簡sln鍜寁cproj鏂囦歡錛孷S2005鎵撳紑鍚庯紝鍙互鐩存帴緙栬瘧榪愯</p> </blockquote> <img src ="http://m.shnenglu.com/true/aggbug/50961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-05-24 16:39 <a href="http://m.shnenglu.com/true/archive/2008/05/24/50961.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>linux thread鍦ㄧ嚎鍙傝?/title><link>http://m.shnenglu.com/true/archive/2008/05/17/50199.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sat, 17 May 2008 14:12:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/05/17/50199.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/50199.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/05/17/50199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/50199.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/50199.html</trackback:ping><description><![CDATA[<a >http://www.sbin.org/doc/glibc/libc_34.html</a> <img src ="http://m.shnenglu.com/true/aggbug/50199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-05-17 22:12 <a href="http://m.shnenglu.com/true/archive/2008/05/17/50199.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓轟粈涔堢綉緇滀紶杈揳scii鐮佷笉闇瑕佽繘琛屽瓧鑺傚簭杞崲錛?/title><link>http://m.shnenglu.com/true/archive/2008/05/14/49789.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Wed, 14 May 2008 01:48:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/05/14/49789.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/49789.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/05/14/49789.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/49789.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/49789.html</trackback:ping><description><![CDATA[ascii鏄?byte緙栫爜錛屾墍浠ユ病鏈夎繖涓棶棰? <img src ="http://m.shnenglu.com/true/aggbug/49789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-05-14 09:48 <a href="http://m.shnenglu.com/true/archive/2008/05/14/49789.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍐呭瓨瓚婄晫鍜屾硠闇茶皟璇曞伐鍏穂杞琞http://m.shnenglu.com/true/archive/2008/03/21/45030.htmltruetrueFri, 21 Mar 2008 02:07:00 GMThttp://m.shnenglu.com/true/archive/2008/03/21/45030.htmlhttp://m.shnenglu.com/true/comments/45030.htmlhttp://m.shnenglu.com/true/archive/2008/03/21/45030.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/45030.htmlhttp://m.shnenglu.com/true/services/trackbacks/45030.html

浣滆咃細sixth

鐢–/C++寮鍙戝叾涓渶浠や漢澶寸柤鐨勪竴涓棶棰樺氨鏄唴瀛樼鐞嗭紝鏈夋椂鍊欎負浜嗘煡鎵句竴涓唴瀛樻硠婕忔垨鑰呬竴涓唴瀛樿闂秺鐣岋紝闇瑕佽鑺變笂濂藉嚑澶╂椂闂達紝濡傛灉鏈変竴嬈懼伐鍏瘋兘澶熷府鍔╂垜浠仛榪欎歡浜嬫儏灝卞ソ浜嗭紝valgrind姝eソ灝辨槸榪欐牱鐨勪竴嬈懼伐鍏楓?

Valgrind鏄竴嬈懼熀浜庢ā鎷焞inux涓嬬殑紼嬪簭璋冭瘯鍣ㄥ拰鍓栨瀽鍣ㄧ殑杞歡濂椾歡錛屽彲浠ヨ繍琛屼簬x86, amd64鍜宲pc32鏋舵瀯涓娿倂algrind鍖呭惈涓涓牳蹇冿紝瀹冩彁渚涗竴涓櫄鎷熺殑CPU榪愯紼嬪簭錛岃繕鏈変竴緋誨垪鐨勫伐鍏鳳紝瀹冧滑瀹屾垚璋冭瘯錛屽墫鏋愬拰涓浜涚被浼肩殑浠誨姟銆倂algrind鏄珮搴︽ā鍧楀寲鐨勶紝鎵浠ュ紑鍙戜漢鍛樻垨鑰呯敤鎴峰彲浠ョ粰瀹冩坊鍔犳柊鐨勫伐鍏瘋屼笉浼氭崯鍧忓繁鏈夌殑緇撴瀯銆?

valgrind鐨勫畼鏂圭綉鍧鏄細http://valgrind.org

浣犲彲浠ュ湪瀹冪殑緗戠珯涓婁笅杞藉埌鏈鏂扮殑valgrind錛屽畠鏄紑鏀炬簮鐮佸拰鍏嶈垂鐨勩?

涓銆佷粙緇?/strong>

valgrind鍖呭惈鍑犱釜鏍囧噯鐨勫伐鍏鳳紝瀹冧滑鏄細

1銆乵emcheck

memcheck鎺㈡祴紼嬪簭涓唴瀛樼鐞嗗瓨鍦ㄧ殑闂銆傚畠媯鏌ユ墍鏈夊鍐呭瓨鐨勮/鍐欐搷浣滐紝騫舵埅鍙栨墍鏈夌殑malloc/new/free/delete璋冪敤銆傚洜姝emcheck宸ュ叿鑳藉鎺㈡祴鍒頒互涓嬮棶棰橈細

1錛変嬌鐢ㄦ湭鍒濆鍖栫殑鍐呭瓨

2錛夎/鍐欏凡緇忚閲婃斁鐨勫唴瀛?

3錛夎/鍐欏唴瀛樿秺鐣?

4錛夎/鍐欎笉鎭板綋鐨勫唴瀛樻爤絀洪棿

5錛夊唴瀛樻硠婕?

6錛変嬌鐢╩alloc/new/new[]鍜宖ree/delete/delete[]涓嶅尮閰嶃?

2銆乧achegrind

cachegrind鏄竴涓猚ache鍓栨瀽鍣ㄣ傚畠妯℃嫙鎵цCPU涓殑L1, D1鍜孡2 cache錛屽洜姝ゅ畠鑳藉緢綺劇‘鐨勬寚鍑轟唬鐮佷腑鐨刢ache鏈懡涓傚鏋滀綘闇瑕侊紝瀹冨彲浠ユ墦鍗板嚭cache鏈懡涓殑嬈℃暟錛屽唴瀛樺紩鐢ㄥ拰鍙戠敓cache鏈懡涓殑姣忎竴琛屼唬鐮侊紝姣忎竴涓嚱鏁幫紝姣忎竴涓ā鍧楀拰鏁翠釜紼嬪簭鐨勬憳瑕併傚鏋滀綘瑕佹眰鏇寸粏鑷寸殑淇℃伅錛屽畠鍙互鎵撳嵃鍑烘瘡涓琛屾満鍣ㄧ爜鐨勬湭鍛戒腑嬈℃暟銆傚湪x86鍜宎md64涓婏紝 cachegrind閫氳繃CPUID鑷姩鎺㈡祴鏈哄櫒鐨刢ache閰嶇疆錛屾墍浠ュ湪澶氭暟鎯呭喌涓嬪畠涓嶅啀闇瑕佹洿澶氱殑閰嶇疆淇℃伅浜嗐?

3銆乭elgrind

helgrind鏌ユ壘澶氱嚎紼嬬▼搴忎腑鐨勭珵浜夋暟鎹俬elgrind鏌ユ壘鍐呭瓨鍦板潃錛岄偅浜涜澶氫簬涓鏉$嚎紼嬭闂殑鍐呭瓨鍦板潃錛屼絾鏄病鏈変嬌鐢ㄤ竴鑷寸殑閿佸氨浼氳鏌ュ嚭銆傝繖琛ㄧず榪欎簺鍦板潃鍦ㄥ綰跨▼闂磋闂殑鏃跺欐病鏈夎繘琛屽悓姝ワ紝寰堝彲鑳戒細寮曡搗寰堥毦鏌ユ壘鐨勬椂搴忛棶棰樸?

浜屻乿algrind瀵逛綘鐨勭▼搴忛兘鍋氫簡浜涗粈涔?/strong>

valgrind琚璁℃垚闈炰鏡鍏ュ紡鐨勶紝瀹冪洿鎺ュ伐浣滀簬鍙墽琛屾枃浠朵笂錛屽洜姝ゅ湪媯鏌ュ墠涓嶉渶瑕侀噸鏂扮紪璇戙佽繛鎺ュ拰淇敼浣犵殑紼嬪簭銆傝媯鏌ヤ竴涓▼搴忓緢綆鍗曪紝鍙渶瑕佹墽琛屼笅闈㈢殑鍛戒護灝卞彲浠ヤ簡

valgrind --tool=tool_name program_name

姣斿鎴戜滑瑕佸ls -l鍛戒護鍋氬唴瀛樻鏌ワ紝鍙渶瑕佹墽琛屼笅闈㈢殑鍛戒護灝卞彲浠ヤ簡

valgrind --tool=memcheck ls -l

涓嶇鏄嬌鐢ㄥ摢涓伐鍏鳳紝valgrind鍦ㄥ紑濮嬩箣鍓嶆諱細鍏堝彇寰楀浣犵殑紼嬪簭鐨勬帶鍒舵潈錛屼粠鍙墽琛屽叧鑱斿簱閲岃鍙栬皟璇曚俊鎭傜劧鍚庡湪valgrind鏍稿績鎻愪緵鐨勮櫄鎷烠PU涓婅繍琛岀▼搴忥紝valgrind浼氭牴鎹夋嫨鐨勫伐鍏鋒潵澶勭悊浠g爜錛岃宸ュ叿浼氬悜浠g爜涓姞鍏ユ嫻嬩唬鐮侊紝騫舵妸榪欎簺浠g爜浣滀負鏈緇堜唬鐮佽繑鍥炵粰valgrind鏍稿績錛屾渶鍚巚algrind鏍稿績榪愯榪欎簺浠g爜銆?

濡傛灉瑕佹鏌ュ唴瀛樻硠婕忥紝鍙渶瑕佸鍔?-leak-check=yes灝卞彲浠ヤ簡錛屽懡浠ゅ涓?

valgrind --tool=memcheck --leak-check=yes ls -l

涓嶅悓宸ュ叿闂村姞鍏ョ殑浠g爜鍙樺寲闈炲父鐨勫ぇ銆傚湪姣忎釜浣滅敤鍩熺殑鏈熬錛宮emcheck鍔犲叆浠g爜媯鏌ユ瘡涓鐗囧唴瀛樼殑璁塊棶鍜岃繘琛屽艱綆楋紝浠g爜澶у皬鑷沖皯澧炲姞12鍊嶏紝榪愯閫熷害瑕佹瘮騫蟲椂鎱?5鍒?0鍊嶃?

valgrind妯℃嫙紼嬪簭涓殑姣忎竴鏉℃寚浠ゆ墽琛岋紝鍥犳錛屾鏌ュ伐鍏峰拰鍓栨瀽宸ュ叿涓嶄粎浠呮槸瀵逛綘鐨勫簲鐢ㄧ▼搴忥紝榪樻湁瀵瑰叡浜簱錛孏NU C搴擄紝X鐨勫鎴風搴撻兘璧蜂綔鐢ㄣ?

涓夈佺幇鍦ㄥ紑濮?/strong>

棣栧厛錛屽湪緙栬瘧紼嬪簭鐨勬椂鍊欐墦寮璋冭瘯妯″紡錛坓cc緙栬瘧鍣ㄧ殑-g閫夐」錛夈傚鏋滄病鏈夎皟璇曚俊鎭紝鍗充嬌鏈濂界殑valgrind宸ュ叿涔熷皢涓兘澶熺寽嫻嬬壒瀹氱殑浠g爜鏄睘浜庡摢涓涓嚱鏁般傛墦寮璋冭瘯閫夐」榪涜緙栬瘧鍚庡啀鐢╲algrind媯鏌ワ紝valgrind灝嗕細緇欎綘鐨勪釜璇︾粏鐨勬姤鍛婏紝姣斿鍝竴琛屼唬鐮佸嚭鐜頒簡鍐呭瓨娉勬紡銆?

褰撴鏌ョ殑鏄疌++紼嬪簭鐨勬椂鍊欙紝榪樺簲璇ヨ冭檻鍙︿竴涓夐」 -fno-inline銆傚畠浣垮緱鍑芥暟璋冪敤閾懼緢娓呮櫚錛岃繖鏍峰彲浠ュ噺灝戜綘鍦ㄦ祻瑙堝ぇ鍨婥++紼嬪簭鏃剁殑娣蜂貢銆傛瘮濡傚湪浣跨敤榪欎釜閫夐」鐨勬椂鍊欙紝鐢╩emcheck媯鏌?openoffice灝卞緢瀹規槗銆傚綋鐒訛紝浣犲彲鑳戒笉浼氬仛榪欓」宸ヤ綔錛屼絾鏄嬌鐢ㄨ繖涓閫夐」浣垮緱valgrind鐢熸垚鏇寸簿紜殑閿欒鎶ュ憡鍜屽噺灝戞販涔便?

涓浜涚紪璇戜紭鍖栭夐」(姣斿-O2鎴栬呮洿楂樼殑浼樺寲閫夐」)錛屽彲鑳戒細浣垮緱memcheck鎻愪氦閿欒鐨勬湭鍒濆鍖栨姤鍛婏紝鍥犳錛屼負浜嗕嬌寰梫algrind鐨勬姤鍛婃洿綺劇‘錛屽湪緙栬瘧鐨勬椂鍊欐渶濂戒笉瑕佷嬌鐢ㄤ紭鍖栭夐」銆?

濡傛灉紼嬪簭鏄氳繃鑴氭湰鍚姩鐨勶紝鍙互淇敼鑴氭湰閲屽惎鍔ㄧ▼搴忕殑浠g爜錛屾垨鑰呬嬌鐢?-trace-children=yes閫夐」鏉ヨ繍琛岃剼鏈?

涓嬮潰鏄敤memcheck媯鏌s -l鍛戒護鐨勮緭鍑烘姤鍛婏紝鍦ㄧ粓绔笅鎵ц涓嬮潰鐨勫懡浠?

valgrind --tool=memcheck ls -l

紼嬪簭浼氭墦鍗板嚭ls -l鍛戒護鐨勭粨鏋滐紝鏈鍚庢槸valgrind鐨勬鏌ユ姤鍛婂涓嬶細

==4187==

==4187== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 19 from 2)

==4187== malloc/free: in use at exit: 15,154 bytes in 105 blocks.

==4187== malloc/free: 310 allocs, 205 frees, 60,093 bytes allocated.

==4187== For counts of detected errors, rerun with: -v

==4187== searching for pointers to 105 not-freed blocks.

==4187== checked 145,292 bytes.

==4187==

==4187== LEAK SUMMARY:

==4187== definitely lost: 0 bytes in 0 blocks.

==4187== possibly lost: 0 bytes in 0 blocks.

==4187== still reachable: 15,154 bytes in 105 blocks.

==4187== suppressed: 0 bytes in 0 blocks.

==4187== Reachable blocks (those to which a pointer was found) are not shown.

==4187== To see them, rerun with: --show-reachable=yes

榪欓噷鐨?#8220;4187”鎸囩殑鏄墽琛宭s -l鐨勮繘紼婭D錛岃繖鏈夊埄浜庡尯鍒笉鍚岃繘紼嬬殑鎶ュ憡銆俶emcheck浼氱粰鍑烘姤鍛婏紝鍒嗛厤緗拰閲婃斁浜嗗灝戝唴瀛橈紝鏈夊灝戝唴瀛樻硠婕忎簡錛岃繕鏈夊灝戝唴瀛樼殑璁塊棶鏄彲杈劇殑錛屾鏌ヤ簡澶氬皯瀛楄妭鐨勫唴瀛樸?

涓嬮潰涓句袱涓敤valgrind鍋氬唴瀛樻鏌ョ殑渚嬪瓙

渚嬪瓙涓 (test.c)錛?

#include <string.h>

int main(int argc, char *argv[])
{
char *ptr;

ptr = (char*) malloc(10);
strcpy(ptr, "01234567890");

return 0;
}

緙栬瘧紼嬪簭

gcc -g -o test test.c

鐢╲algrind鎵ц鍛戒護

valgrind --tool=memcheck --leak-check=yes ./test

鎶ュ憡濡備笅

==4270== Memcheck, a memory error detector.

==4270== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.

==4270== Using LibVEX rev 1606, a library for dynamic binary translation.

==4270== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.

==4270== Using valgrind-3.2.0, a dynamic binary instrumentation framework.

==4270== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.

==4270== For more details, rerun with: -v

==4270==

==4270== Invalid write of size 1

==4270== at 0x4006190: strcpy (mc_replace_strmem.c:271)

==4270== by 0x80483DB: main (test.c:8)

==4270== Address 0x4023032 is 0 bytes after a block of size 10 alloc'd

==4270== at 0x40044F6: malloc (vg_replace_malloc.c:149)

==4270== by 0x80483C5: main (test.c:7)

==4270==

==4270== Invalid write of size 1

==4270== at 0x400619C: strcpy (mc_replace_strmem.c:271)

==4270== by 0x80483DB: main (test.c:8)

==4270== Address 0x4023033 is 1 bytes after a block of size 10 alloc'd

==4270== at 0x40044F6: malloc (vg_replace_malloc.c:149)

==4270== by 0x80483C5: main (test.c:7)

==4270==

==4270== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 12 from 1)

==4270== malloc/free: in use at exit: 10 bytes in 1 blocks.

==4270== malloc/free: 1 allocs, 0 frees, 10 bytes allocated.

==4270== For counts of detected errors, rerun with: -v

==4270== searching for pointers to 1 not-freed blocks.

==4270== checked 51,496 bytes.

==4270==

==4270==

==4270== 10 bytes in 1 blocks are definitely lost in loss record 1 of 1

==4270== at 0x40044F6: malloc (vg_replace_malloc.c:149)

==4270== by 0x80483C5: main (test.c:7)

==4270==

==4270== LEAK SUMMARY:

==4270== definitely lost: 10 bytes in 1 blocks.

==4270== possibly lost: 0 bytes in 0 blocks.

==4270== still reachable: 0 bytes in 0 blocks.

==4270== suppressed: 0 bytes in 0 blocks.

==4270== Reachable blocks (those to which a pointer was found) are not shown.

==4270== To see them, rerun with: --show-reachable=yes

浠庤繖浠芥姤鍛婂彲浠ョ湅鍑猴紝榪涚▼鍙鋒槸4270錛宼est.c鐨勭8琛屽啓鍐呭瓨瓚婄晫浜嗭紝寮曡搗鍐欏唴瀛樿秺鐣岀殑鏄痵trcpy鍑芥暟錛?

絎?琛屾硠婕忎簡10涓瓧鑺傜殑鍐呭瓨錛屽紩璧峰唴瀛樻硠婕忕殑鏄痬alloc鍑芥暟銆?

渚嬪瓙浜岋紙test2.c)

#include <stdio.h>

int foo(int x)
{
if (x < 0) {
printf("%d ", x);
}

return 0;
}

int main(int argc, char *argv[])
{
int x;

foo(x);

return 0;
}

緙栬瘧紼嬪簭

gcc -g -o test2 test2.c

鐢╲algrind鍋氬唴瀛樻鏌?

valgrind --tool=memcheck ./test2

杈撳嚭鎶ュ憡濡備笅

==4285== Memcheck, a memory error detector.

==4285== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.

==4285== Using LibVEX rev 1606, a library for dynamic binary translation.

==4285== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.

==4285== Using valgrind-3.2.0, a dynamic binary instrumentation framework.

==4285== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.

==4285== For more details, rerun with: -v

==4285==

==4285== Conditional jump or move depends on uninitialised value(s)

==4285== at 0x8048372: foo (test2.c:5)

==4285== by 0x80483B4: main (test2.c:16)

==4285==p p

==4285== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 12 from 1)

==4285== malloc/free: in use at exit: 0 bytes in 0 blocks.

==4285== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.

==4285== For counts of detected errors, rerun with: -v

==4285== All heap blocks were freed -- no leaks are possible.

浠庤繖浠芥姤鍛婂彲浠ョ湅鍑鴻繘紼婸ID鏄?285錛宼est2.c鏂囦歡鐨勭16琛岃皟鐢ㄤ簡foo鍑芥暟錛屽湪test2.c鏂囦歡鐨勭5琛宖oo鍑芥暟浣跨敤浜嗕竴涓湭鍒濆鍖栫殑鍙橀噺銆?

valgrind榪樻湁寰堝浣跨敤閫夐」錛屽叿浣撳彲浠ユ煡鐪媣algrind鐨刴an鎵嬪唽欏靛拰valgrind瀹樻柟緗戠珯鐨勫湪綰挎枃妗c?/p>




Windows鐢ㄦ埛涓嶅繀娌撫錛岃櫧鐒跺湪Windows涓婃病鏈塚algrind鍙敤錛屼絾鏄綘鍙互璇曚竴璇旾BM鐨?a >Purify錛屽畠鍦ㄥ姛鑳戒笂鍜孷algrind鐩鎬技銆?br>



true 2008-03-21 10:07 鍙戣〃璇勮
]]>
Linux Deamon緙栫▼鏂規硶[鍙堟槸杞殑錛氾紙]http://m.shnenglu.com/true/archive/2007/11/26/37299.htmltruetrueMon, 26 Nov 2007 02:22:00 GMThttp://m.shnenglu.com/true/archive/2007/11/26/37299.htmlhttp://m.shnenglu.com/true/comments/37299.htmlhttp://m.shnenglu.com/true/archive/2007/11/26/37299.html#Feedback1http://m.shnenglu.com/true/comments/commentRss/37299.htmlhttp://m.shnenglu.com/true/services/trackbacks/37299.html  瀹堟姢榪涚▼錛圖aemon錛夋槸榪愯鍦ㄥ悗鍙扮殑涓縐嶇壒孌婅繘紼嬨傚畠鐙珛浜庢帶鍒剁粓绔茍涓斿懆鏈熸у湴鎵ц鏌愮浠誨姟鎴栫瓑寰呭鐞嗘煇浜涘彂鐢熺殑浜嬩歡銆傚畧鎶よ繘紼嬫槸涓縐嶅緢鏈夌敤鐨勮繘紼嬨?Linux鐨勫ぇ澶氭暟鏈嶅姟鍣ㄥ氨鏄敤瀹堟姢榪涚▼瀹炵幇鐨勩傛瘮濡傦紝Internet鏈嶅姟鍣╥netd錛學eb鏈嶅姟鍣╤ttpd絳夈傚悓鏃訛紝瀹堟姢榪涚▼瀹屾垚璁稿緋葷粺浠誨姟銆傛瘮濡傦紝浣滀笟瑙勫垝榪涚▼crond錛屾墦鍗拌繘紼媗pd絳夈?br>瀹堟姢榪涚▼鐨勭紪紼嬫湰韜茍涓嶅鏉傦紝澶嶆潅鐨勬槸鍚勭鐗堟湰鐨刄nix鐨勫疄鐜版満鍒朵笉灝界浉鍚岋紝閫犳垚涓嶅悓 Unix鐜涓嬪畧鎶よ繘紼嬬殑緙栫▼瑙勫垯騫朵笉涓鑷淬傞渶瑕佹敞鎰忥紝鐓ф惉鏌愪簺涔︿笂鐨勮鍒欙紙鐗瑰埆鏄疊SD4.3鍜屼綆鐗堟湰鐨凷ystem V錛夊埌Linux浼氬嚭鐜伴敊璇殑銆備笅闈㈠皢緇欏嚭Linux涓嬪畧鎶よ繘紼嬬殑緙栫▼瑕佺偣鍜岃緇嗗疄渚嬨?br>涓錛?瀹堟姢榪涚▼鍙婂叾鐗規?br>瀹堟姢榪涚▼鏈閲嶈鐨勭壒鎬ф槸鍚庡彴榪愯銆傚湪榪欎竴鐐逛笂DOS涓嬬殑甯擱┗鍐呭瓨紼嬪簭TSR涓庝箣鐩鎬技銆傚叾嬈★紝瀹堟姢榪涚▼蹇呴』涓庡叾榪愯鍓嶇殑鐜闅旂寮鏉ャ傝繖浜涚幆澧冨寘鎷湭鍏抽棴鐨勬枃浠舵弿榪扮錛屾帶鍒剁粓绔紝浼氳瘽鍜岃繘紼嬬粍錛屽伐浣滅洰褰曚互鍙婃枃浠跺垱寤烘帺妯$瓑銆傝繖浜涚幆澧冮氬父鏄畧鎶よ繘紼嬩粠鎵ц瀹冪殑鐖惰繘紼嬶紙鐗瑰埆鏄痵hell錛変腑緇ф壙涓嬫潵鐨勩傛渶鍚庯紝瀹堟姢榪涚▼鐨勫惎鍔ㄦ柟寮忔湁鍏剁壒孌婁箣澶勩傚畠鍙互鍦↙inux緋葷粺鍚姩鏃朵粠鍚姩鑴氭湰/etc/rc.d涓惎鍔紝鍙互鐢變綔涓氳鍒掕繘紼媍rond鍚姩錛岃繕鍙互鐢辯敤鎴風粓绔紙閫氬父鏄?shell錛夋墽琛屻?br>鎬諱箣錛岄櫎寮榪欎簺鐗規畩鎬т互澶栵紝瀹堟姢榪涚▼涓庢櫘閫氳繘紼嬪熀鏈笂娌℃湁浠涔堝尯鍒傚洜姝わ紝緙栧啓瀹堟姢榪涚▼瀹為檯涓婃槸鎶婁竴涓櫘閫氳繘紼嬫寜鐓т笂榪扮殑瀹堟姢榪涚▼鐨勭壒鎬ф敼閫犳垚涓哄畧鎶よ繘紼嬨傚鏋滃榪涚▼鏈夋瘮杈冩繁鍏ョ殑璁よ瘑灝辨洿瀹規槗鐞嗚В鍜岀紪紼嬩簡銆?br>浜岋紟 瀹堟姢榪涚▼鐨勭紪紼嬭鐐?br>鍓嶉潰璁茶繃錛屼笉鍚孶nix鐜涓嬪畧鎶よ繘紼嬬殑緙栫▼瑙勫垯騫朵笉涓鑷淬傛墍騫哥殑鏄畧鎶よ繘紼嬬殑緙栫▼鍘熷垯鍏跺疄閮戒竴鏍鳳紝鍖哄埆鍦ㄤ簬鍏蜂綋鐨勫疄鐜扮粏鑺備笉鍚屻傝繖涓師鍒欏氨鏄婊¤凍瀹堟姢榪涚▼鐨勭壒鎬с傚悓鏃訛紝Linux鏄熀浜嶴yetem V鐨凷VR4騫墮伒寰狿osix鏍囧噯錛屽疄鐜拌搗鏉ヤ笌BSD4鐩告瘮鏇存柟渚褲傜紪紼嬭鐐瑰涓嬶紱
1. 鍦ㄥ悗鍙拌繍琛屻?br>涓洪伩鍏嶆寕璧鋒帶鍒剁粓绔皢Daemon鏀懼叆鍚庡彴鎵ц銆傛柟娉曟槸鍦ㄨ繘紼嬩腑璋冪敤fork浣跨埗榪涚▼緇堟錛岃Daemon鍦ㄥ瓙榪涚▼涓悗鍙版墽琛屻?br>if(pid=fork())
exit(0);//鏄埗榪涚▼錛岀粨鏉熺埗榪涚▼錛屽瓙榪涚▼緇х畫
2. 鑴辯鎺у埗緇堢錛岀櫥褰曚細璇濆拰榪涚▼緇?br>鏈夊繀瑕佸厛浠嬬粛涓涓婰inux涓殑榪涚▼涓庢帶鍒剁粓绔紝鐧誨綍浼氳瘽鍜岃繘紼嬬粍涔嬮棿鐨勫叧緋伙細榪涚▼灞炰簬涓涓繘紼嬬粍錛岃繘紼嬬粍鍙鳳紙GID錛夊氨鏄繘紼嬬粍闀跨殑榪涚▼鍙鳳紙PID錛夈傜櫥褰曚細璇濆彲浠ュ寘鍚涓繘紼嬬粍銆傝繖浜涜繘紼嬬粍鍏變韓涓涓帶鍒剁粓绔傝繖涓帶鍒剁粓绔氬父鏄垱寤鴻繘紼嬬殑鐧誨綍緇堢銆?br>鎺у埗緇堢錛岀櫥褰曚細璇濆拰榪涚▼緇勯氬父鏄粠鐖惰繘紼嬬戶鎵夸笅鏉ョ殑銆傛垜浠殑鐩殑灝辨槸瑕佹憜鑴卞畠浠紝浣夸箣涓嶅彈瀹冧滑鐨勫獎鍝嶃傛柟娉曟槸鍦ㄧ1鐐圭殑鍩虹涓婏紝璋冪敤setsid()浣胯繘紼嬫垚涓轟細璇濈粍闀匡細
setsid();
璇存槑錛氬綋榪涚▼鏄細璇濈粍闀挎椂setsid()璋冪敤澶辮觸銆備絾絎竴鐐瑰凡緇忎繚璇佽繘紼嬩笉鏄細璇濈粍闀褲俿etsid()璋冪敤鎴愬姛鍚庯紝榪涚▼鎴愪負鏂扮殑浼氳瘽緇勯暱鍜屾柊鐨勮繘紼嬬粍闀匡紝騫朵笌鍘熸潵鐨勭櫥褰曚細璇濆拰榪涚▼緇勮劚紱匯傜敱浜庝細璇濊繃紼嬪鎺у埗緇堢鐨勭嫭鍗犳э紝榪涚▼鍚屾椂涓庢帶鍒剁粓绔劚紱匯?br>3. 紱佹榪涚▼閲嶆柊鎵撳紑鎺у埗緇堢
鐜板湪錛岃繘紼嬪凡緇忔垚涓烘棤緇堢鐨勪細璇濈粍闀褲備絾瀹冨彲浠ラ噸鏂扮敵璇鋒墦寮涓涓帶鍒剁粓绔傚彲浠ラ氳繃浣胯繘紼嬩笉鍐嶆垚涓轟細璇濈粍闀挎潵紱佹榪涚▼閲嶆柊鎵撳紑鎺у埗緇堢錛?br>
if(pid=fork())
exit(0);//緇撴潫絎竴瀛愯繘紼嬶紝絎簩瀛愯繘紼嬬戶緇紙絎簩瀛愯繘紼嬩笉鍐嶆槸浼氳瘽緇勯暱錛?br>4. 鍏抽棴鎵撳紑鐨勬枃浠舵弿榪扮
榪涚▼浠庡垱寤哄畠鐨勭埗榪涚▼閭i噷緇ф壙浜嗘墦寮鐨勬枃浠舵弿榪扮銆傚涓嶅叧闂紝灝嗕細嫻垂緋葷粺璧勬簮錛岄犳垚榪涚▼鎵鍦ㄧ殑鏂囦歡緋葷粺鏃犳硶鍗鎬笅浠ュ強寮曡搗鏃犳硶棰勬枡鐨勯敊璇傛寜濡備笅鏂規硶鍏抽棴瀹冧滑錛?br>for(i=0;i 鍏抽棴鎵撳紑鐨勬枃浠舵弿榪扮close(i);>
5. 鏀瑰彉褰撳墠宸ヤ綔鐩綍
榪涚▼媧誨姩鏃訛紝鍏跺伐浣滅洰褰曟墍鍦ㄧ殑鏂囦歡緋葷粺涓嶈兘鍗鎬笅銆備竴鑸渶瑕佸皢宸ヤ綔鐩綍鏀瑰彉鍒版牴鐩綍銆傚浜庨渶瑕佽漿鍌ㄦ牳蹇冿紝鍐欒繍琛屾棩蹇楃殑榪涚▼灝嗗伐浣滅洰褰曟敼鍙樺埌鐗瑰畾鐩綍濡?tmpchdir("/")
6. 閲嶈鏂囦歡鍒涘緩鎺╂ā
榪涚▼浠庡垱寤哄畠鐨勭埗榪涚▼閭i噷緇ф壙浜嗘枃浠跺垱寤烘帺妯°傚畠鍙兘淇敼瀹堟姢榪涚▼鎵鍒涘緩鐨勬枃浠剁殑瀛樺彇浣嶃備負闃叉榪欎竴鐐癸紝灝嗘枃浠跺垱寤烘帺妯℃竻闄わ細umask(0);
7. 澶勭悊SIGCHLD淇″彿
澶勭悊SIGCHLD淇″彿騫朵笉鏄繀欏葷殑銆備絾瀵逛簬鏌愪簺榪涚▼錛岀壒鍒槸鏈嶅姟鍣ㄨ繘紼嬪線寰鍦ㄨ姹傚埌鏉ユ椂鐢熸垚瀛愯繘紼嬪鐞嗚姹傘傚鏋滅埗榪涚▼涓嶇瓑寰呭瓙榪涚▼緇撴潫錛屽瓙榪涚▼灝嗘垚涓哄兊灝歌繘紼嬶紙zombie錛変粠鑰屽崰鐢ㄧ郴緇熻祫婧愩傚鏋滅埗榪涚▼絳夊緟瀛愯繘紼嬬粨鏉燂紝灝嗗鍔犵埗榪涚▼鐨勮礋鎷咃紝褰卞搷鏈嶅姟鍣ㄨ繘紼嬬殑騫跺彂鎬ц兘銆傚湪Linux涓嬪彲浠ョ畝鍗曞湴灝?SIGCHLD淇″彿鐨勬搷浣滆涓篠IG_IGN銆?br>signal(SIGCHLD,SIG_IGN);
榪欐牱錛屽唴鏍稿湪瀛愯繘紼嬬粨鏉熸椂涓嶄細浜х敓鍍靛案榪涚▼銆傝繖涓鐐逛笌BSD4涓嶅悓錛孊SD4涓嬪繀欏繪樉寮忕瓑寰呭瓙榪涚▼緇撴潫鎵嶈兘閲婃斁鍍靛案榪涚▼銆?br>涓夛紟 瀹堟姢榪涚▼瀹炰緥
瀹堟姢榪涚▼瀹炰緥鍖呮嫭涓ら儴鍒嗭細涓葷▼搴弔est.c鍜屽垵濮嬪寲紼嬪簭init.c銆備富紼嬪簭姣忛殧涓鍒嗛挓鍚?tmp鐩綍涓殑鏃ュ織test.log鎶ュ憡榪愯鐘舵併傚垵濮嬪寲紼嬪簭涓殑init_daemon鍑芥暟璐熻矗鐢熸垚瀹堟姢榪涚▼銆傝鑰呭彲浠ュ埄鐢╥nit_daemon鍑芥暟鐢熸垚鑷繁鐨勫畧鎶よ繘紼嬨?br>1錛?init.c娓呭崟

#include < unistd.h >
#include < signal.h >
#include < sys/param.h >
#include < sys/types.h >
#include < sys/stat.h >
void init_daemon(void)
{
int pid;
int i;
if(pid=fork())
exit(0);//鏄埗榪涚▼錛岀粨鏉熺埗榪涚▼
else if(pid< 0)
exit(1);//fork澶辮觸錛岄鍑?br>//鏄涓瀛愯繘紼嬶紝鍚庡彴緇х畫鎵ц
setsid();//絎竴瀛愯繘紼嬫垚涓烘柊鐨勪細璇濈粍闀垮拰榪涚▼緇勯暱
//騫朵笌鎺у埗緇堢鍒嗙
if(pid=fork())
exit(0);//鏄涓瀛愯繘紼嬶紝緇撴潫絎竴瀛愯繘紼?br>else if(pid< 0)
exit(1);//fork澶辮觸錛岄鍑?br>//鏄浜屽瓙榪涚▼錛岀戶緇?br>//絎簩瀛愯繘紼嬩笉鍐嶆槸浼氳瘽緇勯暱

for(i=0;i< NOFILE;++i)//鍏抽棴鎵撳紑鐨勬枃浠舵弿榪扮
close(i);
chdir("/tmp");//鏀瑰彉宸ヤ綔鐩綍鍒?tmp
umask(0);//閲嶈鏂囦歡鍒涘緩鎺╂ā
return;
}
2錛?test.c娓呭崟
#include < stdio.h >
#include < time.h >

void init_daemon(void);//瀹堟姢榪涚▼鍒濆鍖栧嚱鏁?br>
main()
{
FILE *fp;
time_t t;
init_daemon();//鍒濆鍖栦負Daemon

while(1)//姣忛殧涓鍒嗛挓鍚憈est.log鎶ュ憡榪愯鐘舵?br>{
sleep(60);//鐫$湢涓鍒嗛挓
if((fp=fopen("test.log","a")) >=0)
{
t=time(0);
fprintf(fp,"Im here at %sn",asctime(localtime(&t)) );
fclose(fp);
}
}
}
浠ヤ笂紼嬪簭鍦≧edHat Linux6.0涓嬬紪璇戦氳繃銆傛楠ゅ涓嬶細
緙栬瘧錛歡cc -g -o test init.c test.c
鎵ц錛?/test
鏌ョ湅榪涚▼錛歱s -ef
浠庤緭鍑哄彲浠ュ彂鐜皌est瀹堟姢榪涚▼鐨勫悇縐嶇壒鎬ф弧瓚充笂闈㈢殑瑕佹眰銆?

true 2007-11-26 10:22 鍙戣〃璇勮
]]>
awk鐢ㄦ硶灝忕粨銆愯漿銆?/title><link>http://m.shnenglu.com/true/archive/2007/11/13/36495.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Tue, 13 Nov 2007 04:02:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2007/11/13/36495.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/36495.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2007/11/13/36495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/36495.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/36495.html</trackback:ping><description><![CDATA[<h2>awk 鐢ㄦ硶灝忕粨</h2> <div id="hvzpftn" class=t_msgfont id=postmessage_8063 twffan="done">awk 鐢ㄦ硶錛歛wk ' pattern {action} '<br><br>鍙橀噺鍚?鍚箟<br>ARGC 鍛戒護琛屽彉鍏冧釜鏁?br>ARGV 鍛戒護琛屽彉鍏冩暟緇?br>FILENAME 褰撳墠杈撳叆鏂囦歡鍚?br>FNR 褰撳墠鏂囦歡涓殑璁板綍鍙?br>FS 杈撳叆鍩熷垎闅旂錛岄粯璁や負涓涓┖鏍?br>RS 杈撳叆璁板綍鍒嗛殧絎?br>NF 褰撳墠璁板綍閲屽煙涓暟<br>NR 鍒扮洰鍓嶄負姝㈣褰曟暟<br>OFS 杈撳嚭鍩熷垎闅旂<br>ORS 杈撳嚭璁板綍鍒嗛殧絎?br><br>1銆乤wk '/101/' file 鏄劇ず鏂囦歡file涓寘鍚?01鐨勫尮閰嶈銆?br>awk '/101/,/105/' file<br>awk '$1 == 5' file<br>awk '$1 == "CT"' file 娉ㄦ剰蹇呴』甯﹀弻寮曞彿<br>awk '$1 * $2 >100 ' file<br>awk '$2 >5 && $2<=15' file<br>2銆乤wk '{print NR,NF,$1,$NF,}' file 鏄劇ず鏂囦歡file鐨勫綋鍓嶈褰曞彿銆佸煙鏁板拰姣忎竴琛岀殑絎竴涓拰鏈鍚庝竴涓煙銆?br>awk '/101/ {print $1,$2 + 10}' file 鏄劇ず鏂囦歡file鐨勫尮閰嶈鐨勭涓銆佷簩涓煙鍔?0銆?br>awk '/101/ {print $1$2}' file<br>awk '/101/ {print $1 $2}' file 鏄劇ず鏂囦歡file鐨勫尮閰嶈鐨勭涓銆佷簩涓煙錛屼絾鏄劇ず鏃跺煙涓棿娌℃湁鍒嗛殧絎︺?br>3銆乨f | awk '$4>1000000 ' 閫氳繃綆¢亾絎﹁幏寰楄緭鍏ワ紝濡傦細鏄劇ず絎?涓煙婊¤凍鏉′歡鐨勮銆?br>4銆乤wk -F "|" '{print $1}' file 鎸夌収鏂扮殑鍒嗛殧絎?#8220;|”榪涜鎿嶄綔銆?br>awk 'BEGIN { FS="[: \t|]" }<br>{print $1,$2,$3}' file 閫氳繃璁劇疆杈撳叆鍒嗛殧絎︼紙FS="[: \t|]"錛変慨鏀硅緭鍏ュ垎闅旂銆?br><br>Sep="|"<br>awk -F $Sep '{print $1}' file 鎸夌収鐜鍙橀噺Sep鐨勫煎仛涓哄垎闅旂銆?<br>awk -F '[ :\t|]' '{print $1}' file 鎸夌収姝e垯琛ㄨ揪寮忕殑鍊煎仛涓哄垎闅旂錛岃繖閲屼唬琛ㄧ┖鏍箋?銆乀AB銆亅鍚屾椂鍋氫負鍒嗛殧絎︺?br>awk -F '[][]' '{print $1}' file 鎸夌収姝e垯琛ㄨ揪寮忕殑鍊煎仛涓哄垎闅旂錛岃繖閲屼唬琛╗銆乚<br>5銆乤wk -f awkfile file 閫氳繃鏂囦歡awkfile鐨勫唴瀹逛緷嬈¤繘琛屾帶鍒躲?br>cat awkfile<br>/101/{print "\047 Hello! \047"} --閬囧埌鍖歸厤琛屼互鍚庢墦鍗?' Hello! '.\047浠h〃鍗曞紩鍙楓?br>{print $1,$2} --鍥犱負娌℃湁妯″紡鎺у埗錛屾墦鍗版瘡涓琛岀殑鍓嶄袱涓煙銆?br>6銆乤wk '$1 ~ /101/ {print $1}' file 鏄劇ず鏂囦歡涓涓涓煙鍖歸厤101鐨勮錛堣褰曪級銆?br>7銆乤wk 'BEGIN { OFS="%"}<br>{print $1,$2}' file 閫氳繃璁劇疆杈撳嚭鍒嗛殧絎︼紙OFS="%"錛変慨鏀硅緭鍑烘牸寮忋?br>8銆乤wk 'BEGIN { max=100 ;print "max=" max} BEGIN 琛ㄧず鍦ㄥ鐞嗕換鎰忚涔嬪墠榪涜鐨勬搷浣溿?br>{max=($1 >max ?$1:max); print $1,"Now max is "max}' file 鍙栧緱鏂囦歡絎竴涓煙鐨勬渶澶у箋?br>錛堣〃杈懼紡1?琛ㄨ揪寮?:琛ㄨ揪寮? 鐩稿綋浜庯細<br>if (琛ㄨ揪寮?)<br>琛ㄨ揪寮?<br>else<br>琛ㄨ揪寮?<br>awk '{print ($1>4 ? "high "$1: "low "$1)}' file<br>9銆乤wk '$1 * $2 >100 {print $1}' file 鏄劇ず鏂囦歡涓涓涓煙鍖歸厤101鐨勮錛堣褰曪級銆?br>10銆乤wk '{$1 == 'Chi' {$3 = 'China'; print}' file 鎵懼埌鍖歸厤琛屽悗鍏堝皢絎?涓煙鏇挎崲鍚庡啀鏄劇ず璇ヨ錛堣褰曪級銆?br>awk '{$7 %= 3; print $7}' file 灝嗙7鍩熻3闄わ紝騫跺皢浣欐暟璧嬬粰絎?鍩熷啀鎵撳嵃銆?br>11銆乤wk '/tom/ {wage=$2+$3; printf wage}' file 鎵懼埌鍖歸厤琛屽悗涓哄彉閲弚age璧嬪煎茍鎵撳嵃璇ュ彉閲忋?br>12銆乤wk '/tom/ {count++;}<br>END {print "tom was found "count" times"}' file END琛ㄧず鍦ㄦ墍鏈夎緭鍏ヨ澶勭悊瀹屽悗榪涜澶勭悊銆?br>13銆乤wk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;<br>END {print "The total is $" cost>"filename"}' file gsub鍑芥暟鐢ㄧ┖涓叉浛鎹?鍜?鍐嶅皢緇撴灉杈撳嚭鍒癴ilename涓?br>1 2 3 $1,200.00<br>1 2 3 $2,300.00<br>1 2 3 $4,000.00<br><br>awk '{gsub(/\$/,"");gsub(/,/,"");<br>if ($4>1000&&$4<2000) c1+=$4;<br>else if ($4>2000&&$4<3000) c2+=$4;<br>else if ($4>3000&&$4<4000) c3+=$4;<br>else c4+=$4; }<br>END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file<br>閫氳繃if鍜宔lse if瀹屾垚鏉′歡璇彞<br><br>awk '{gsub(/\$/,"");gsub(/,/,"");<br>if ($4>3000&&$4<4000) exit;<br>else c4+=$4; }<br>END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file<br>閫氳繃exit鍦ㄦ煇鏉′歡鏃墮鍑猴紝浣嗘槸浠嶆墽琛孍ND鎿嶄綔銆?br>awk '{gsub(/\$/,"");gsub(/,/,"");<br>if ($4>3000) next;<br>else c4+=$4; }<br>END {printf "c4=[%d]\n",c4}"' file<br>閫氳繃next鍦ㄦ煇鏉′歡鏃惰煩榪囪琛岋紝瀵逛笅涓琛屾墽琛屾搷浣溿?br><br><br>14銆乤wk '{ print FILENAME,$0 }' file1 file2 file3>fileall 鎶奻ile1銆乫ile2銆乫ile3鐨勬枃浠跺唴瀹瑰叏閮ㄥ啓鍒癴ileall涓紝鏍煎紡涓?br>鎵撳嵃鏂囦歡騫跺墠緗枃浠跺悕銆?br>15銆乤wk ' $1!=previous { close(previous); previous=$1 } <br>{print substr($0,index($0," ") +1)>$1}' fileall 鎶婂悎騫跺悗鐨勬枃浠墮噸鏂板垎鎷嗕負3涓枃浠躲傚茍涓庡師鏂囦歡涓鑷淬?br>16銆乤wk 'BEGIN {"date"|getline d; print d}' 閫氳繃綆¢亾鎶奷ate鐨勬墽琛岀粨鏋滈佺粰getline錛屽茍璧嬬粰鍙橀噺d錛岀劧鍚庢墦鍗般?br>17銆乤wk 'BEGIN {system("echo \"Input your name:\\c\""); getline d;print "\nYour name is",d,"\b!\n"}'<br>閫氳繃getline鍛戒護浜や簰杈撳叆name錛屽茍鏄劇ず鍑烘潵銆?br>awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") print $1}}'<br>鎵撳嵃/etc/passwd鏂囦歡涓敤鎴峰悕鍖呭惈050x_鐨勭敤鎴峰悕銆?br><br>18銆乤wk '{ i=1;while(i<NF) {print NF,$i;i++}}' file 閫氳繃while璇彞瀹炵幇寰幆銆?br>awk '{ for(i=1;i<NF;i++) {print NF,$i}}' file 閫氳繃for璇彞瀹炵幇寰幆銆?<br>type file|awk -F "/" '<br>{ for(i=1;i<NF;i++)<br>{ if(i==NF-1) { printf "%s",$i }<br>else { printf "%s/",$i } }}' 鏄劇ず涓涓枃浠剁殑鍏ㄨ礬寰勩?br>鐢╢or鍜宨f鏄劇ず鏃ユ湡<br>awk 'BEGIN {<br>for(j=1;j<=12;j++)<br>{ flag=0;<br>printf "\n%d鏈堜喚\n",j;<br>for(i=1;i<=31;i++)<br>{<br>if (j==2&&i>28) flag=1;<br>if ((j==4||j==6||j==9||j==11)&&i>30) flag=1;<br>if (flag==0) {printf "%02d%02d ",j,i}<br>}<br>}<br>}'<br>19銆佸湪awk涓皟鐢ㄧ郴緇熷彉閲忓繀欏葷敤鍗曞紩鍙鳳紝濡傛灉鏄弻寮曞彿錛屽垯琛ㄧず瀛楃涓?br>Flag=abcd<br>awk '{print '$Flag'}' 緇撴灉涓篴bcd<br>awk '{print "$Flag"}' 緇撴灉涓?Flag</div> <img src ="http://m.shnenglu.com/true/aggbug/36495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2007-11-13 12:02 <a href="http://m.shnenglu.com/true/archive/2007/11/13/36495.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>緗戠粶榪炴帴紼嬪簭SSH涓篖inux鍔╁姏[杞琞http://m.shnenglu.com/true/archive/2007/07/30/28998.htmltruetrueMon, 30 Jul 2007 03:03:00 GMThttp://m.shnenglu.com/true/archive/2007/07/30/28998.htmlhttp://m.shnenglu.com/true/comments/28998.htmlhttp://m.shnenglu.com/true/archive/2007/07/30/28998.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/28998.htmlhttp://m.shnenglu.com/true/services/trackbacks/28998.html銆銆涓轟粈涔堣浣跨敤SSH
銆銆涓婇潰鎵璇寸殑鍚勯」鍔熻兘,鏃╂湡BSD鎵鎻愪緵鐨剅鎸囦護(rsh, rlogin, rcp)鍑犱箮閮借兘瀹屾垚,閭d負浠涔堣鐢⊿SH鍛?鐞嗙敱灝卞湪浜巖鎸囦護鎵鎻愪緵鐨勮繛鎺ュ茍娌℃湁緇忚繃緙栫爜鍔犲瘑,鏈夊績浜哄彧瑕佷嬌鐢ㄥ悎閫傜殑宸ュ叿灝辮兘澶熸埅涓嬩綘鎵杈撳叆鐨勬瘡涓涓瓧,鍖呮嫭瀵嗙爜銆傚鏋滀綘鍒╃敤X protocol鍦ㄨ繙绔満鍣ㄦ墽琛孹紼嬪簭錛屼篃鍙互鎴笅浣犱紶杈撶殑璧勬枡,褰撶劧涔熷寘鎷瘑鐮併傝孲SH灝遍拡瀵逛簡榪欎簺寮辯偣鍋氫簡寮ヨˉ,瀵規墍浼犺緭鐨勮祫鏂欏姞浠ョ紪鐮併?
銆銆SSH2涓嶴SH1
銆銆SSH2瀵筍SH1鐨勭▼搴忕爜鍋氫簡澶у箙搴︾殑鏀瑰啓,鏍規嵁SSH鍏徃鐨勮娉? SSH2鏈?8%鐨勭▼搴忕爜鍜孲SH1鐨勪笉涓鏍楓傞櫎浜哠SH1鎵鎻愪緵鐨凴SA娉曚箣澶栵紝SSH2涔熸彁渚涗簡鍙﹀鐨勫叕寮閲戝寵緙栫爜娉曚互鍙婇噾鍖欎氦鎹㈡硶,SSH2棰勮閲囩敤DSA緙栫爜浠ュ強Diffie-Hellman閲戝寵浜ゆ崲娉曘傛澶?鏇存彁渚涗簡SFTP,浣挎垜浠兘鍦‵TP鏂歸潰涔熷緱鍒板畨鍏ㄧ殑淇濋殰銆?
銆銆鏂囦歡涓嬭澆錛?a href="ftp://ftp.ssh.com/pub/SSH/">ftp://ftp.SSH.com/pub/SSH/錛沴inuxnews.idv.tw/download/SSH-1.2.31.tar.gz 1MB for Linux Server錛沴inuxnews.idv.tw/download/SSHWin-2.4.0-pl2.exe 5MB for Win32 Client
銆銆瀹夎鐜錛歊edhat 7.0
銆銆1銆佷笅杞藉畬鍚庡皢鏂囦歡瑙e帇緙?
銆銆tar zxvf SSH-1.2.31.tar.gz
銆銆2銆佸紑濮嬬紪璇戯紝瀹夎
銆銆cd SSH-1.2.31;
銆銆./configure;
銆銆make;
銆銆make install;
銆銆3銆佺紪杈?etc/rc.d/rc.local鍔犲叆/usr/sbin/SSHd浠ヤ究寮鏈鴻嚜鍔ㄥ惎鍔ㄣ?
銆銆4銆佸畬鎴?
銆銆濡傛灉浣犳槸2鍙癓inux瑕佺浉榪炲氨閮借瑁呰繖涓▼搴忥紝濡傛灉鏄疻indows緋葷粺瑕佽繛Linux鐨勮瘽灝辮瀹夎for Winxx鐨勭▼搴忋俉inxx閮ㄥ垎璇瘋嚜宸辮瘯璇曘?
銆銆Linux鐨勪嬌鐢ㄦ柟娉?
銆銆/usr/bin/SSH -l username 187.136.5.1
銆銆鐒跺悗杈撳叆瀵嗙爜錛岃繛榪涘幓鍚庢槸涓鑸殑鏂囧瓧鐣岄潰錛屽氨鍙互寮濮嬬敤浜嗐?
銆銆鍙﹀錛孲SH鍙互鐩存帴浣跨敤root鐧誨叆銆?
銆銆娉細濡傛灉浣犺瀵硅繛鎺ヨ繘鏉ョ殑IP鍋氶檺鍒剁殑璇濆彲浠ョ紪杈?etc/hosts.deny鍜?etc/hosts.allow
銆銆紺轟緥濡備笅錛?
銆銆/etc/hosts.deny錛?
銆銆ALL:ALL
銆銆#紱佹鎵鏈塈P浣跨敤鎵鏈夌殑鏈嶅姟
銆銆/etc/hosts.allow錛?
銆銆SSHd:111.222.333.444
銆銆#寮鏀?11.222.333.444浣跨敤SSH榪炴帴
銆銆鍒╃敤SSH鏉tp
銆銆1銆丩inux瀵筁inux浼犳枃浠訛細
銆銆涓婁紶錛歴cp wrong.php bha@187.136.5.1:
銆銆榪欐椂浼氶棶浣犲瘑鐮侊紝杈撳叆瀵嗙爜鍚с?
銆 璇存槑錛?
銆銆scp鏄寚浠?
銆銆wrong.php鏄湰鍦扮鐨勬枃浠跺悕
銆銆bha@187.136.5.1鏄繙绔殑鐢ㄦ埛(user name)鍜孖P
銆銆鏈鍚庤浣忛偅涓啋鍙蜂竴瀹氳鍔狅紝閭f槸榪滅鐨刪ome directory銆?
銆涓嬩紶錛歴cp bha@187.136.5.1:wrong.php .
銆銆璇存槑錛?
銆銆鐢╯cp灝?a href="mailto:bha@187.136.5.1">bha@187.136.5.1鐩綍鐨剋rong.php鎷瘋礉鍒扮洰鍓嶇殑鐩綍(灝辨槸閭d釜.)
銆銆2銆乄in瀵筁inux浼犳枃浠訛細
銆銆ls錛氬氨鏄痙ir
銆銆et錛氫笅浼犳枃浠?
銆銆put錛氫笂浼犳枃浠?
銆銆exit錛氶鍑篺tp紼嬪簭
銆銆鎸囦護錛歱sftp-x86 187.136.5.1
銆銆榪欐椂浼氶棶鍚嶅瓧瀵嗙爜鍜岃涓嶈浜х敓鍔犲瘑閿鹼紝鐒跺悗鍐嶇敤put鍜実et鏉ヤ笂涓嬩紶鏂囦歡

true 2007-07-30 11:03 鍙戣〃璇勮
]]>
緋葷粺鏃墮棿C銆丆錛嬶紜http://m.shnenglu.com/true/archive/2007/04/12/21709.htmltruetrueThu, 12 Apr 2007 04:04:00 GMThttp://m.shnenglu.com/true/archive/2007/04/12/21709.htmlhttp://m.shnenglu.com/true/comments/21709.htmlhttp://m.shnenglu.com/true/archive/2007/04/12/21709.html#Feedback1http://m.shnenglu.com/true/comments/commentRss/21709.htmlhttp://m.shnenglu.com/true/services/trackbacks/21709.html

C/C++涓殑鏃ユ湡鍜屾椂闂?br>浣滆咃細鏃ユ湡鍜屾椂闂?鍑哄錛氭棩鏈熷拰鏃墮棿 鏇存柊鏃墮棿錛?2005騫?9鏈?5鏃?br>鎽樿錛?br>鏈枃浠庝粙緇嶅熀紜姒傚康鍏ユ墜錛屾帰璁ㄤ簡鍦–/C++涓鏃ユ湡鍜屾椂闂存搷浣滄墍鐢ㄥ埌鐨勬暟鎹粨鏋勫拰鍑芥暟錛屽茍瀵硅鏃躲佹椂闂寸殑鑾峰彇銆佹椂闂寸殑璁$畻鍜屾樉紺烘牸寮忕瓑鏂歸潰榪涜浜嗛槓榪般傛湰鏂囪繕閫氳繃澶ч噺鐨勫疄渚嬪悜浣犲睍紺轟簡time.h澶存枃浠朵腑澹版槑鐨勫悇縐嶅嚱鏁板拰鏁版嵁緇撴瀯鐨勮緇嗕嬌鐢ㄦ柟娉曘?/p>

鍏抽敭瀛楋細UTC錛堜笘鐣屾爣鍑嗘椂闂達級錛孋alendar Time錛堟棩鍘嗘椂闂達級錛宔poch錛堟椂闂寸偣錛夛紝clock tick錛堟椂閽熻鏃跺崟鍏冿級

1錛庢蹇?br>鍦–/C++涓紝瀵瑰瓧絎︿覆鐨勬搷浣滄湁寰堝鍊煎緱娉ㄦ剰鐨勯棶棰橈紝鍚屾牱錛孋/C++瀵規椂闂寸殑鎿嶄綔涔熸湁璁稿鍊煎緱澶у娉ㄦ剰鐨勫湴鏂廣傛渶榪戯紝鍦ㄦ妧鏈兢涓湁寰堝緗戝弸涔熷嬈¢棶鍒拌繃C++璇█涓鏃墮棿鐨勬搷浣溿佽幏鍙栧拰鏄劇ず絳夌瓑鐨勯棶棰樸備笅闈紝鍦ㄨ繖綃囨枃绔犱腑錛岀瑪鑰呭皢涓昏浠嬬粛鍦–/C++涓椂闂村拰鏃ユ湡鐨勪嬌鐢ㄦ柟娉?

閫氳繃瀛︿範璁稿C/C++搴擄紝浣犲彲浠ユ湁寰堝鎿嶄綔銆佷嬌鐢ㄦ椂闂寸殑鏂規硶銆備絾鍦ㄨ繖涔嬪墠浣犻渶瑕佷簡瑙d竴浜?#8220;鏃墮棿”鍜?#8220;鏃ユ湡”鐨勬蹇碉紝涓昏鏈変互涓嬪嚑涓細

Coordinated Universal Time錛圲TC錛夛細鍗忚皟涓栫晫鏃訛紝鍙堢О涓轟笘鐣屾爣鍑嗘椂闂達紝涔熷氨鏄ぇ瀹舵墍鐔熺煡鐨勬牸鏋楀▉娌繪爣鍑嗘椂闂達紙Greenwich Mean Time錛孏MT錛夈傛瘮濡傦紝涓浗鍐呭湴鐨勬椂闂翠笌UTC鐨勬椂宸負+8錛屼篃灝辨槸UTC+8銆傜編鍥芥槸UTC-5銆?/p>

Calendar Time錛氭棩鍘嗘椂闂達紝鏄敤“浠庝竴涓爣鍑嗘椂闂寸偣鍒版鏃剁殑鏃墮棿緇忚繃鐨勭鏁?#8221;鏉ヨ〃紺虹殑鏃墮棿銆傝繖涓爣鍑嗘椂闂寸偣瀵逛笉鍚岀殑緙栬瘧鍣ㄦ潵璇翠細鏈夋墍涓嶅悓錛屼絾瀵逛竴涓紪璇戠郴緇熸潵璇達紝榪欎釜鏍囧噯鏃墮棿鐐規槸涓嶅彉鐨勶紝璇ョ紪璇戠郴緇熶腑鐨勬椂闂村搴旂殑鏃ュ巻鏃墮棿閮介氳繃璇ユ爣鍑嗘椂闂寸偣鏉ヨ 閲忥紝鎵浠ュ彲浠ヨ鏃ュ巻鏃墮棿鏄?#8220;鐩稿鏃墮棿”錛屼絾鏄棤璁轟綘鍦ㄥ摢涓涓椂鍖猴紝鍦ㄥ悓涓鏃跺埢瀵瑰悓涓涓爣鍑嗘椂闂寸偣鏉ヨ錛屾棩鍘嗘椂闂撮兘鏄竴鏍風殑銆?/p>

epoch錛氭椂闂寸偣銆傛椂闂寸偣鍦ㄦ爣鍑咰/C++涓槸涓涓暣鏁幫紝瀹冪敤姝ゆ椂鐨勬椂闂村拰鏍囧噯鏃墮棿鐐圭浉宸殑縐掓暟錛堝嵆鏃ュ巻鏃墮棿錛夋潵琛ㄧず銆?/p>

clock tick錛氭椂閽熻鏃跺崟鍏冿紙鑰屼笉鎶婂畠鍙仛鏃墮挓婊寸瓟嬈℃暟錛夛紝涓涓椂閽熻鏃跺崟鍏冪殑鏃墮棿闀跨煭鏄敱CPU鎺у埗鐨勩備竴涓猚lock tick涓嶆槸CPU鐨勪竴涓椂閽熷懆鏈燂紝鑰屾槸C/C++鐨勪竴涓熀鏈鏃跺崟浣嶃?/p>

鎴戜滑鍙互浣跨敤ANSI鏍囧噯搴撲腑鐨則ime.h澶存枃浠躲傝繖涓ご鏂囦歡涓畾涔夌殑鏃墮棿鍜屾棩鏈熸墍浣跨敤鐨勬柟娉曪紝鏃犺鏄湪緇撴瀯瀹氫箟錛岃繕鏄懡鍚嶏紝閮藉叿鏈夋槑鏄劇殑C璇█椋庢牸銆備笅闈紝鎴戝皢璇存槑鍦–/C++涓庢牱浣跨敤鏃ユ湡鐨勬椂闂村姛鑳姐?/p>

2錛?璁℃椂

C/C++涓殑璁℃椂鍑芥暟鏄痗lock()錛岃屼笌鍏剁浉鍏崇殑鏁版嵁綾誨瀷鏄痗lock_t銆傚湪MSDN涓紝鏌ュ緱瀵筩lock鍑芥暟瀹氫箟濡備笅錛?/p>

clock_t clock( void );

榪欎釜鍑芥暟榪斿洖浠?#8220;寮鍚繖涓▼搴忚繘紼?#8221;鍒?#8220;紼嬪簭涓皟鐢╟lock()鍑芥暟”鏃朵箣闂寸殑CPU鏃墮挓璁℃椂鍗曞厓錛坈lock tick錛夋暟錛屽湪MSDN涓О涔嬩負鎸傞挓鏃墮棿錛坵al-clock錛夈傚叾涓璫lock_t鏄敤鏉ヤ繚瀛樻椂闂寸殑鏁版嵁綾誨瀷錛屽湪time.h鏂囦歡涓紝鎴戜滑鍙互鎵懼埌瀵瑰畠鐨勫畾涔夛細

#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif

寰堟槑鏄撅紝clock_t鏄竴涓暱鏁村艦鏁般傚湪time.h鏂囦歡涓紝榪樺畾涔変簡涓涓父閲廋LOCKS_PER_SEC錛屽畠鐢ㄦ潵琛ㄧず涓縐掗挓浼氭湁澶氬皯涓椂閽熻鏃跺崟鍏冿紝鍏跺畾涔夊涓嬶細

#define CLOCKS_PER_SEC ((clock_t)1000)

鍙互鐪嬪埌姣忚繃鍗冨垎涔嬩竴縐掞紙1姣錛夛紝璋冪敤clock錛堬級鍑芥暟榪斿洖鐨勫煎氨鍔?銆備笅闈婦涓緥瀛愶紝浣犲彲浠ヤ嬌鐢ㄥ叕寮廲lock()/CLOCKS_PER_SEC鏉ヨ綆椾竴涓繘紼嬭嚜韜殑榪愯鏃墮棿錛?/p>

void elapsed_time()
{
printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}

褰撶劧錛屼綘涔熷彲浠ョ敤clock鍑芥暟鏉ヨ綆椾綘鐨勬満鍣ㄨ繍琛屼竴涓驚鐜垨鑰呭鐞嗗叾瀹冧簨浠跺埌搴曡姳浜嗗灝戞椂闂達細

#include “stdio.h”
#include “stdlib.h”
#include “time.h”

int main( void )
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 嫻嬮噺涓涓簨浠舵寔緇殑鏃墮棿*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}

鍦ㄧ瑪鑰呯殑鏈哄櫒涓婏紝榪愯緇撴灉濡備笅錛?/p>

Time to do 10000000 empty loops is 0.03000 seconds

涓婇潰鎴戜滑鐪嬪埌鏃墮挓璁℃椂鍗曞厓鐨勯暱搴︿負1姣錛岄偅涔堣鏃剁殑綺懼害涔熶負1姣錛岄偅涔堟垜浠彲涓嶅彲浠ラ氳繃鏀瑰彉CLOCKS_PER_SEC鐨勫畾涔夛紝閫氳繃鎶婂畠瀹氫箟鐨勫ぇ涓浜涳紝浠庤屼嬌璁℃椂綺懼害鏇撮珮鍛紵閫氳繃灝濊瘯錛屼綘浼氬彂鐜拌繖鏍鋒槸涓嶈鐨勩傚湪鏍囧噯C/C++涓紝鏈灝忕殑璁℃椂鍗曚綅鏄竴姣銆?/p>

3錛庝笌鏃ユ湡鍜屾椂闂寸浉鍏崇殑鏁版嵁緇撴瀯

鍦ㄦ爣鍑咰/C++涓紝鎴戜滑鍙氳繃tm緇撴瀯鏉ヨ幏寰楁棩鏈熷拰鏃墮棿錛宼m緇撴瀯鍦╰ime.h涓殑瀹氫箟濡備笅錛?/p>

#ifndef _TM_DEFINED
struct tm {
int tm_sec; /* 縐?– 鍙栧煎尯闂翠負[0,59] */
int tm_min; /* 鍒?- 鍙栧煎尯闂翠負[0,59] */
int tm_hour; /* 鏃?- 鍙栧煎尯闂翠負[0,23] */
int tm_mday; /* 涓涓湀涓殑鏃ユ湡 - 鍙栧煎尯闂翠負[1,31] */
int tm_mon; /* 鏈堜喚錛堜粠涓鏈堝紑濮嬶紝0浠h〃涓鏈堬級 - 鍙栧煎尯闂翠負[0,11] */
int tm_year; /* 騫翠喚錛屽叾鍊肩瓑浜庡疄闄呭勾浠藉噺鍘?900 */
int tm_wday; /* 鏄熸湡 – 鍙栧煎尯闂翠負[0,6]錛屽叾涓?浠h〃鏄熸湡澶╋紝1浠h〃鏄熸湡涓錛屼互姝ょ被鎺?*/
int tm_yday; /* 浠庢瘡騫寸殑1鏈?鏃ュ紑濮嬬殑澶╂暟 – 鍙栧煎尯闂翠負[0,365]錛屽叾涓?浠h〃1鏈?鏃ワ紝1浠h〃1鏈?鏃ワ紝浠ユ綾繪帹 */
int tm_isdst; /* 澶忎護鏃舵爣璇嗙錛屽疄琛屽浠ゆ椂鐨勬椂鍊欙紝tm_isdst涓烘銆備笉瀹炶澶忎護鏃剁殑榪涘欙紝tm_isdst涓?錛涗笉浜嗚В鎯呭喌鏃訛紝tm_isdst()涓鴻礋銆?/
};
#define _TM_DEFINED
#endif

ANSI C鏍囧噯縐頒嬌鐢╰m緇撴瀯鐨勮繖縐嶆椂闂磋〃紺轟負鍒嗚В鏃墮棿(broken-down time)銆?/p>

鑰屾棩鍘嗘椂闂達紙Calendar Time錛夋槸閫氳繃time_t鏁版嵁綾誨瀷鏉ヨ〃紺虹殑錛岀敤time_t琛ㄧず鐨勬椂闂達紙鏃ュ巻鏃墮棿錛夋槸浠庝竴涓椂闂寸偣錛堜緥濡傦細1970騫?鏈?鏃?鏃?鍒?縐掞級鍒版鏃剁殑縐掓暟銆傚湪time.h涓紝鎴戜滑涔熷彲浠ョ湅鍒皌ime_t鏄竴涓暱鏁村瀷鏁幫細

#ifndef _TIME_T_DEFINED
typedef long time_t; /* 鏃墮棿鍊?*/
#define _TIME_T_DEFINED /* 閬垮厤閲嶅瀹氫箟 time_t */
#endif

澶у鍙兘浼氫駭鐢熺枒闂細鏃㈢劧time_t瀹為檯涓婃槸闀挎暣鍨嬶紝鍒版湭鏉ョ殑鏌愪竴澶╋紝浠庝竴涓椂闂寸偣錛堜竴鑸槸1970騫?鏈?鏃?鏃?鍒?縐掞級鍒伴偅鏃剁殑縐掓暟錛堝嵆鏃ュ巻鏃墮棿錛夎秴鍑轟簡闀挎暣褰㈡墍鑳借〃紺虹殑鏁扮殑鑼冨洿鎬庝箞鍔烇紵瀵箃ime_t鏁版嵁綾誨瀷鐨勫兼潵璇達紝瀹冩墍琛ㄧず鐨勬椂闂翠笉鑳芥櫄浜?038騫?鏈?8鏃?9鏃?4鍒?7縐掋備負浜嗚兘澶熻〃紺烘洿涔呰繙鐨勬椂闂達紝涓浜涚紪璇戝櫒鍘傚晢寮曞叆浜?4浣嶇敋鑷蟲洿闀跨殑鏁村艦鏁版潵淇濆瓨鏃ュ巻鏃墮棿銆傛瘮濡傚井杞湪Visual C++涓噰鐢ㄤ簡__time64_t鏁版嵁綾誨瀷鏉ヤ繚瀛樻棩鍘嗘椂闂達紝騫墮氳繃_time64()鍑芥暟鏉ヨ幏寰楁棩鍘嗘椂闂達紙鑰屼笉鏄氳繃浣跨敤32浣嶅瓧鐨則ime()鍑芥暟錛夛紝榪欐牱灝卞彲浠ラ氳繃璇ユ暟鎹被鍨嬩繚瀛?001騫?鏈?鏃?鏃?鍒?縐掞紙涓嶅寘鎷鏃墮棿鐐癸級涔嬪墠鐨勬椂闂淬?/p>

鍦╰ime.h澶存枃浠朵腑錛屾垜浠繕鍙互鐪嬪埌涓浜涘嚱鏁幫紝瀹冧滑閮芥槸浠ime_t涓哄弬鏁扮被鍨嬫垨榪斿洖鍊肩被鍨嬬殑鍑芥暟錛?/p>

double difftime(time_t time1, time_t time0);
time_t mktime(struct tm * timeptr);
time_t time(time_t * timer);
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);

姝ゅ錛宼ime.h榪樻彁渚涗簡涓ょ涓嶅悓鐨勫嚱鏁板皢鏃ュ巻鏃墮棿錛堜竴涓敤time_t琛ㄧず鐨勬暣鏁幫級杞崲涓烘垜浠鉤鏃剁湅鍒扮殑鎶婂勾鏈堟棩鏃跺垎縐掑垎寮鏄劇ず鐨勬椂闂存牸寮弔m錛?/p>

struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

閫氳繃鏌ラ槄MSDN錛屾垜浠彲浠ョ煡閬揗icrosoft C/C++ 7.0涓椂闂寸偣鐨勫鹼紙time_t瀵硅薄鐨勫鹼級鏄粠1899騫?2鏈?1鏃?鏃?鍒?縐掑埌璇ユ椂闂寸偣鎵緇忚繃鐨勭鏁幫紝鑰屽叾瀹冨悇縐嶇増鏈殑Microsoft C/C++鍜屾墍鏈変笉鍚岀増鏈殑Visual C++閮芥槸璁$畻鐨勪粠1970騫?鏈?鏃?鏃?鍒?縐掑埌璇ユ椂闂寸偣鎵緇忚繃鐨勭鏁般?/p>

4錛庝笌鏃ユ湡鍜屾椂闂寸浉鍏崇殑鍑芥暟鍙婂簲鐢?br>鍦ㄦ湰鑺傦紝鎴戝皢鍚戝ぇ瀹跺睍紺烘庢牱鍒╃敤time.h涓0鏄庣殑鍑芥暟瀵規椂闂磋繘琛屾搷浣溿傝繖浜涙搷浣滃寘鎷彇褰撳墠鏃墮棿銆佽綆楁椂闂撮棿闅斻佷互涓嶅悓鐨勫艦寮忔樉紺烘椂闂寸瓑鍐呭銆?/p>

4.1 鑾峰緱鏃ュ巻鏃墮棿

鎴戜滑鍙互閫氳繃time()鍑芥暟鏉ヨ幏寰楁棩鍘嗘椂闂達紙Calendar Time錛夛紝鍏跺師鍨嬩負錛?/p>

time_t time(time_t * timer);

濡傛灉浣犲凡緇忓0鏄庝簡鍙傛暟timer錛屼綘鍙互浠庡弬鏁皌imer榪斿洖鐜板湪鐨勬棩鍘嗘椂闂達紝鍚屾椂涔熷彲浠ラ氳繃榪斿洖鍊艱繑鍥炵幇鍦ㄧ殑鏃ュ巻鏃墮棿錛屽嵆浠庝竴涓椂闂寸偣錛堜緥濡傦細1970騫?鏈?鏃?鏃?鍒?縐掞級鍒扮幇鍦ㄦ鏃剁殑縐掓暟銆傚鏋滃弬鏁頒負絀猴紙NUL錛夛紝鍑芥暟灝嗗彧閫氳繃榪斿洖鍊艱繑鍥炵幇鍦ㄧ殑鏃ュ巻鏃墮棿錛屾瘮濡備笅闈㈣繖涓緥瀛愮敤鏉ユ樉紺哄綋鍓嶇殑鏃ュ巻鏃墮棿錛?/p>

#include "time.h"
#include "stdio.h"
int main(void)
{
struct tm *ptr;
time_t lt;
lt =time(NUL);
printf("The Calendar Time now is %d\n",lt);
return 0;
}

榪愯鐨勭粨鏋滀笌褰撴椂鐨勬椂闂存湁鍏籌紝鎴戝綋鏃惰繍琛岀殑緇撴灉鏄細

The Calendar Time now is 1122707619

鍏朵腑1122707619灝辨槸鎴戣繍琛岀▼搴忔椂鐨勬棩鍘嗘椂闂淬傚嵆浠?970騫?鏈?鏃?鏃?鍒?縐掑埌姝ゆ椂鐨勭鏁般?/p>

4.2 鑾峰緱鏃ユ湡鍜屾椂闂?/p>

榪欓噷璇寸殑鏃ユ湡鍜屾椂闂村氨鏄垜浠鉤鏃舵墍璇寸殑騫淬佹湀銆佹棩銆佹椂銆佸垎銆佺絳変俊鎭備粠絎?鑺傛垜浠凡緇忕煡閬撹繖浜涗俊鎭兘淇濆瓨鍦ㄤ竴涓悕涓簍m鐨勭粨鏋勪綋涓紝閭d箞濡備綍灝嗕竴涓棩鍘嗘椂闂翠繚瀛樹負涓涓猼m緇撴瀯鐨勫璞″憿錛?/p>

鍏朵腑鍙互浣跨敤鐨勫嚱鏁版槸gmtime()鍜宭ocaltime()錛岃繖涓や釜鍑芥暟鐨勫師鍨嬩負錛?/p>

struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

鍏朵腑gmtime()鍑芥暟鏄皢鏃ュ巻鏃墮棿杞寲涓轟笘鐣屾爣鍑嗘椂闂達紙鍗蟲牸鏋楀凹娌繪椂闂達級錛屽茍榪斿洖涓涓猼m緇撴瀯浣撴潵淇濆瓨榪欎釜鏃墮棿錛岃宭ocaltime()鍑芥暟鏄皢鏃ュ巻鏃墮棿杞寲涓烘湰鍦版椂闂淬傛瘮濡傜幇鍦ㄧ敤gmtime()鍑芥暟鑾峰緱鐨勪笘鐣屾爣鍑嗘椂闂存槸2005騫?鏈?0鏃?鐐?8鍒?0縐掞紝閭d箞鎴戠敤localtime()鍑芥暟鍦ㄤ腑鍥藉湴鍖鴻幏寰楃殑鏈湴鏃墮棿浼氭瘮涓栫晫鏍囧噯鏃墮棿鏅?涓皬鏃訛紝鍗?005騫?鏈?0鏃?5鐐?8鍒?0縐掋備笅闈㈡槸涓緥瀛愶細

#include "time.h"
#include "stdio.h"
int main(void)
{
struct tm *local;
time_t t;
t=time(NUL);
local=localtime(&t);
printf("Local hour is: %d\n",local->tm_hour);
local=gmtime(&t);
printf("UTC hour is: %d\n",local->tm_hour);
return 0;
}

榪愯緇撴灉鏄細

Local hour is: 15
UTC hour is: 7

4.3 鍥哄畾鐨勬椂闂存牸寮?/p>

鎴戜滑鍙互閫氳繃asctime()鍑芥暟鍜宑time()鍑芥暟灝嗘椂闂翠互鍥哄畾鐨勬牸寮忔樉紺哄嚭鏉ワ紝涓よ呯殑榪斿洖鍊奸兘鏄痗har*鍨嬬殑瀛楃涓層傝繑鍥炵殑鏃墮棿鏍煎紡涓猴細

鏄熸湡鍑?鏈堜喚 鏃ユ湡 鏃?鍒?縐?騫碶n\0
渚嬪錛歐ed Jan 02 02:03:55 1980\n\0

鍏朵腑\n鏄竴涓崲琛岀錛孿0鏄竴涓┖瀛楃錛岃〃紺哄瓧絎︿覆緇撴潫銆備笅闈㈡槸涓や釜鍑芥暟鐨勫師鍨嬶細

char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);

鍏朵腑asctime()鍑芥暟鏄氳繃tm緇撴瀯鏉ョ敓鎴愬叿鏈夊浐瀹氭牸寮忕殑淇濆瓨鏃墮棿淇℃伅鐨勫瓧絎︿覆錛岃宑time()鏄氳繃鏃ュ巻鏃墮棿鏉ョ敓鎴愭椂闂村瓧絎︿覆銆傝繖鏍風殑璇濓紝asctime錛堬級鍑芥暟鍙槸鎶妕m緇撴瀯瀵硅薄涓殑鍚勪釜鍩熷~鍒版椂闂村瓧絎︿覆鐨勭浉搴斾綅緗氨琛屼簡錛岃宑time錛堬級鍑芥暟闇瑕佸厛鍙傜収鏈湴鐨勬椂闂磋緗紝鎶婃棩鍘嗘椂闂磋漿鍖栦負鏈湴鏃墮棿錛岀劧鍚庡啀鐢熸垚鏍煎紡鍖栧悗鐨勫瓧絎︿覆銆傚湪涓嬮潰錛屽鏋渢鏄竴涓潪絀虹殑time_t鍙橀噺鐨勮瘽錛岄偅涔堬細

printf(ctime(&t));

絳変環浜庯細

struct tm *ptr;
ptr=localtime(&t);
printf(asctime(ptr));

閭d箞錛屼笅闈㈣繖涓▼搴忕殑涓ゆ潯printf璇彞杈撳嚭鐨勭粨鏋滃氨鏄笉鍚岀殑浜嗭紙闄ら潪浣犲皢鏈湴鏃跺尯璁句負涓栫晫鏍囧噯鏃墮棿鎵鍦ㄧ殑鏃跺尯錛夛細

#include "time.h"
#include "stdio.h"
int main(void)
{
struct tm *ptr;
time_t lt;
lt =time(NUL);
ptr=gmtime(<);
printf(asctime(ptr));
printf(ctime(<));
return 0;
}

榪愯緇撴灉錛?/p>

Sat Jul 30 08:43:03 2005
Sat Jul 30 16:43:03 2005

4.4 鑷畾涔夋椂闂存牸寮?/p>

鎴戜滑鍙互浣跨敤strftime錛堬級鍑芥暟灝嗘椂闂存牸寮忓寲涓烘垜浠兂瑕佺殑鏍煎紡銆傚畠鐨勫師鍨嬪涓嬶細

size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);

鎴戜滑鍙互鏍規嵁format鎸囧悜瀛楃涓蹭腑鏍煎紡鍛戒護鎶妕imeptr涓繚瀛樼殑鏃墮棿淇℃伅鏀懼湪strDest鎸囧悜鐨勫瓧絎︿覆涓紝鏈澶氬悜strDest涓瓨鏀緈axsize涓瓧絎︺傝鍑芥暟榪斿洖鍚憇trDest鎸囧悜鐨勫瓧絎︿覆涓斁緗殑瀛楃鏁般?/p>

鍑芥暟strftime()鐨勬搷浣滄湁浜涚被浼間簬sprintf()錛氳瘑鍒互鐧懼垎鍙?%)寮濮嬬殑鏍煎紡鍛戒護闆嗗悎錛屾牸寮忓寲杈撳嚭緇撴灉鏀懼湪涓涓瓧絎︿覆涓傛牸寮忓寲鍛戒護璇存槑涓瞫trDest涓悇縐嶆棩鏈熷拰鏃墮棿淇℃伅鐨勭‘鍒囪〃紺烘柟娉曘傛牸寮忎覆涓殑鍏朵粬瀛楃鍘熸牱鏀捐繘涓蹭腑銆傛牸寮忓懡浠ゅ垪鍦ㄤ笅闈紝瀹冧滑鏄尯鍒嗗ぇ灝忓啓鐨勩?/p>

%a 鏄熸湡鍑犵殑綆鍐?br>%A 鏄熸湡鍑犵殑鍏ㄧО
%b 鏈堝垎鐨勭畝鍐?br>%B 鏈堜喚鐨勫叏縐?br>%c 鏍囧噯鐨勬棩鏈熺殑鏃墮棿涓?br>%C 騫翠喚鐨勫悗涓や綅鏁板瓧
%d 鍗佽繘鍒惰〃紺虹殑姣忔湀鐨勭鍑犲ぉ
%D 鏈?澶?騫?br>%e 鍦ㄤ袱瀛楃鍩熶腑錛屽崄榪涘埗琛ㄧず鐨勬瘡鏈堢殑絎嚑澶?br>%F 騫?鏈?鏃?br>%g 騫翠喚鐨勫悗涓や綅鏁板瓧錛屼嬌鐢ㄥ熀浜庡懆鐨勫勾
%G 騫村垎錛屼嬌鐢ㄥ熀浜庡懆鐨勫勾
%h 綆鍐欑殑鏈堜喚鍚?br>%H 24灝忔椂鍒剁殑灝忔椂
%I 12灝忔椂鍒剁殑灝忔椂
%j 鍗佽繘鍒惰〃紺虹殑姣忓勾鐨勭鍑犲ぉ
%m 鍗佽繘鍒惰〃紺虹殑鏈堜喚
%M 鍗佹椂鍒惰〃紺虹殑鍒嗛挓鏁?br>%n 鏂拌絎?br>%p 鏈湴鐨凙M鎴朠M鐨勭瓑浠鋒樉紺?br>%r 12灝忔椂鐨勬椂闂?br>%R 鏄劇ず灝忔椂鍜屽垎閽燂細hh:mm
%S 鍗佽繘鍒剁殑縐掓暟
%t 姘村鉤鍒惰〃絎?br>%T 鏄劇ず鏃跺垎縐掞細hh:mm:ss
%u 姣忓懆鐨勭鍑犲ぉ錛屾槦鏈熶竴涓虹涓澶?錛堝間粠0鍒?錛屾槦鏈熶竴涓?錛?br>%U 絎勾鐨勭鍑犲懆錛屾妸鏄熸湡鏃ュ仛涓虹涓澶╋紙鍊間粠0鍒?3錛?br>%V 姣忓勾鐨勭鍑犲懆錛屼嬌鐢ㄥ熀浜庡懆鐨勫勾
%w 鍗佽繘鍒惰〃紺虹殑鏄熸湡鍑狅紙鍊間粠0鍒?錛屾槦鏈熷ぉ涓?錛?br>%W 姣忓勾鐨勭鍑犲懆錛屾妸鏄熸湡涓鍋氫負絎竴澶╋紙鍊間粠0鍒?3錛?br>%x 鏍囧噯鐨勬棩鏈熶覆
%X 鏍囧噯鐨勬椂闂翠覆
%y 涓嶅甫涓栫邯鐨勫崄榪涘埗騫翠喚錛堝間粠0鍒?9錛?br>%Y 甯︿笘綰儴鍒嗙殑鍗佽繘鍒跺勾浠?br>%z錛?Z 鏃跺尯鍚嶇О錛屽鏋滀笉鑳藉緱鍒版椂鍖哄悕縐板垯榪斿洖絀哄瓧絎︺?br>%% 鐧懼垎鍙?/p>

濡傛灉鎯蟲樉紺虹幇鍦ㄦ槸鍑犵偣浜嗭紝騫朵互12灝忔椂鍒舵樉紺猴紝灝辮薄涓嬮潰榪欐紼嬪簭錛?/p>

#include “time.h”
#include “stdio.h”
int main(void)
{
struct tm *ptr;
time_t lt;
char str[80];
lt=time(NUL);
ptr=localtime(<);
strftime(str,100,"It is now %I %p",ptr);
printf(str);
return 0;
}

鍏惰繍琛岀粨鏋滀負錛?br>It is now 4PM

鑰屼笅闈㈢殑紼嬪簭鍒欐樉紺哄綋鍓嶇殑瀹屾暣鏃ユ湡錛?/p>

#include <stdio.h>
#include <time.h>

void main( void )
{
struct tm *newtime;
char tmpbuf[128];
time_t lt1;
time( <1 );
newtime=localtime(<1);
strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", newtime);
printf(tmpbuf);
}

榪愯緇撴灉錛?/p>

Today is Saturday, day 30 of July in the year 2005.

4.5 璁$畻鎸佺畫鏃墮棿鐨勯暱搴?/p>

鏈夋椂鍊欏湪瀹為檯搴旂敤涓璁$畻涓涓簨浠舵寔緇殑鏃墮棿闀垮害錛屾瘮濡傝綆楁墦瀛楅熷害銆傚湪絎?鑺傝鏃墮儴鍒嗕腑錛屾垜宸茬粡鐢╟lock鍑芥暟涓句簡涓涓緥瀛愩侰lock()鍑芥暟鍙互綺劇‘鍒版縐掔駭銆傚悓鏃訛紝鎴戜滑涔熷彲浠ヤ嬌鐢╠ifftime()鍑芥暟錛屼絾瀹冨彧鑳界簿紜埌縐掋傝鍑芥暟鐨勫畾涔夊涓嬶細

double difftime(time_t time1, time_t time0);

铏界劧璇ュ嚱鏁拌繑鍥炵殑浠ョ璁$畻鐨勬椂闂撮棿闅旀槸double綾誨瀷鐨勶紝浣嗚繖騫朵笉璇存槑璇ユ椂闂村叿鏈夊悓double涓鏍風殑綺劇‘搴︼紝榪欐槸鐢卞畠鐨勫弬鏁拌寰楃殑錛坱ime_t鏄互縐掍負鍗曚綅璁$畻鐨勶級銆傛瘮濡備笅闈竴孌電▼搴忥細

#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
time_t start,end;
start = time(NUL);
system("pause");
end = time(NUL);
printf("The pause used %f seconds.\n",difftime(end,start));//<-
system("pause");
return 0;
}

榪愯緇撴灉涓猴細
璇鋒寜浠繪剰閿戶緇? . .
The pause used 2.000000 seconds.
璇鋒寜浠繪剰閿戶緇? . .

鍙互鎯沖儚錛屾殏鍋滅殑鏃墮棿騫朵笉閭d箞宸ф槸鏁存暣2縐掗挓銆傚叾瀹烇紝浣犲皢涓婇潰紼嬪簭鐨勫甫鏈?#8220;//<-”娉ㄩ噴鐨勪竴琛岀敤涓嬮潰鐨勪竴琛屼唬鐮佹浛鎹細

printf("The pause used %f seconds.\n",end-start);

鍏惰繍琛岀粨鏋滄槸涓鏍風殑銆?/p>

4.6 鍒嗚В鏃墮棿杞寲涓烘棩鍘嗘椂闂?/p>

榪欓噷璇寸殑鍒嗚В鏃墮棿灝辨槸浠ュ勾銆佹湀銆佹棩銆佹椂銆佸垎銆佺絳夊垎閲忎繚瀛樼殑鏃墮棿緇撴瀯錛屽湪C/C++涓槸tm緇撴瀯銆傛垜浠彲浠ヤ嬌鐢╩ktime錛堬級鍑芥暟灝嗙敤tm緇撴瀯琛ㄧず鐨勬椂闂磋漿鍖栦負鏃ュ巻鏃墮棿銆傚叾鍑芥暟鍘熷瀷濡備笅錛?/p>

time_t mktime(struct tm * timeptr);

鍏惰繑鍥炲煎氨鏄漿鍖栧悗鐨勬棩鍘嗘椂闂淬傝繖鏍鋒垜浠氨鍙互鍏堝埗瀹氫竴涓垎瑙f椂闂達紝鐒跺悗瀵硅繖涓椂闂磋繘琛屾搷浣滀簡錛屼笅闈㈢殑渚嬪瓙鍙互璁$畻鍑?997騫?鏈?鏃ユ槸鏄熸湡鍑狅細

#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
struct tm t;
time_t t_of_day;
t.tm_year=1997-1900;
t.tm_mon=6;
t.tm_mday=1;
t.tm_hour=0;
t.tm_min=0;
t.tm_sec=1;
t.tm_isdst=0;
t_of_day=mktime(&t);
printf(ctime(&t_of_day));
return 0;
}

榪愯緇撴灉錛?/p>

Tue Jul 01 00:00:01 1997

鐜板湪娉ㄦ剰浜嗭紝鏈変簡mktime()鍑芥暟錛屾槸涓嶆槸鎴戜滑鍙互鎿嶄綔鐜板湪涔嬪墠鐨勪換浣曟椂闂村憿錛熶綘鍙互閫氳繃榪欑鍔炴硶綆楀嚭1945騫?鏈?5鍙鋒槸鏄熸湡鍑犲悧錛熺瓟妗堟槸鍚﹀畾鐨勩傚洜涓鴻繖涓椂闂村湪1970騫?鏈?鏃ヤ箣鍓嶏紝鎵浠ュ湪澶у鏁扮紪璇戝櫒涓紝榪欐牱鐨勭▼搴忚櫧鐒跺彲浠ョ紪璇戦氳繃錛屼絾榪愯鏃朵細寮傚父緇堟銆?/p>

5錛庢葷粨

鏈枃浠嬬粛浜嗘爣鍑咰/C++涓殑鏈夊叧鏃ユ湡鍜屾椂闂寸殑姒傚康錛屽茍閫氳繃鍚勭瀹炰緥璁茶堪浜嗚繖浜涘嚱鏁板拰鏁版嵁緇撴瀯鐨勪嬌鐢ㄦ柟娉曘傜瑪鑰呰涓猴紝鍜屾椂闂寸浉鍏崇殑涓浜涙蹇墊槸鐩稿綋閲嶈鐨勶紝鐞嗚В榪欎簺姒傚康鏄悊瑙e悇縐嶆椂闂存牸寮忕殑杞崲鐨勫熀紜錛屾洿鏄簲鐢ㄨ繖浜涘嚱鏁板拰鏁版嵁緇撴瀯鐨勫熀紜銆?br>

 涓婇潰鏄漿鐨勶紝鏈漢鑷繁鍐嶅姞鐐癸紝浠ュ鍚庣敤錛?br>
/* //鏃墮棿鏍煎紡鍖栦負2007.07.02 14錛?0
 time_t tm_now ;
 time(&tm_now) ;
 char szTime[64]="";
 strftime(szTime,64,"%Y.%m.%d %H:%M",localtime(&tm_now));
 cout << szTime << endl;
 */



true 2007-04-12 12:04 鍙戣〃璇勮
]]>
閫氱敤makefilehttp://m.shnenglu.com/true/archive/2007/04/05/21301.htmltruetrueThu, 05 Apr 2007 04:01:00 GMThttp://m.shnenglu.com/true/archive/2007/04/05/21301.htmlhttp://m.shnenglu.com/true/comments/21301.htmlhttp://m.shnenglu.com/true/archive/2007/04/05/21301.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/21301.htmlhttp://m.shnenglu.com/true/services/trackbacks/21301.html

閫氱敤Makefile鍙婇儴鍒嗚В閲?/h2>

######################################
# Copyright (c) 1997 George Foot (george.foot@merton.ox.ac.uk)
# All rights reserved.
######################################
#鐩爣錛堝彲鎵ц鏂囨。錛夊悕縐幫紝搴擄紙璀stdcx,iostr,mysql絳夛級錛屽ご鏂囦歡璺緞
DESTINATION := test
LIBS :=
INCLUDES := .


RM := rm -f
#C,CC鎴朇PP鏂囦歡鐨勫悗緙
PS=cpp
# GNU Make鐨勯殣鍚彉閲忓畾涔?br>CC=g++
CPPFLAGS = -g -Wall -O3 -march=i486
CPPFLAGS += $(addprefix -I,$(INCLUDES))
CPPFLAGS += -MMD

#浠ヤ笅閮ㄥ垎鏃犻渶淇敼
SOURCE := $(wildcard *.$(PS))
OBJS := $(patsubst %.$(PS),%.o,$(SOURCE))
DEPS := $(patsubst %.o,%.d,$(OBJS))
MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.$(PS),$(MISSING_DEPS)))

.PHONY : all deps objs clean rebuild

all : $(DESTINATION)

deps : $(DEPS)
        $(CC) -MM -MMD $(SOURCE)


objs : $(OBJS)

clean :
        @$(RM) *.o
        @$(RM) *.d
        @$(RM) $(DESTINATION)

rebuild: clean all

ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS) :
        @$(RM) $(patsubst %.d,%.o,$@)
endif

-include $(DEPS)

$(DESTINATION) : $(OBJS)
        $(CC) -o $(DESTINATION) $(OBJS) $(addprefix -l,$(LIBS))
#緇撴潫

  • 鍘熶綔鑰呮槸Gorge Foot錛屽啓榪欎釜Makefile鐨勬椂鍊欒繕鏄竴涓鐢?
  • ":="璧嬪鹼紝鍜?="涓嶅悓鐨勬槸錛?:="鍦ㄨ祴鍊肩殑鍚屾椂錛屼細灝嗚祴鍊艱鍙ヤ腑鎵鏈夌殑鍙橀噺灝卞湴灞曞紑錛屼篃灝辨槸璇達紝A:=$(B)鍚庯紝B鐨勫肩殑鏀瑰彉涓嶅啀褰卞搷A
  • 闅愬惈瑙勫垯銆侴UN Make鍦ㄤ笉鐗瑰埆鎸囧畾鐨勬儏鍐典笅浼氫嬌鐢ㄨ濡備互涓嬬紪璇戝懡浠わ細$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@錛岃繖涔熸槸涓轟粈涔堣繖涓狹akefile鏈鍚庝竴涓懡浠ゆ病鏈夋坊鍔?(CPPFLAGS)鐨勫師鍥狅紝鍥犱負緙虹渷鏄寘鍚繖涓彉閲忕殑
  • 鍑芥暟鍜屽彉閲忓緢鐩鎬技錛?$ (鍑芥暟鍚嶏紝絀烘牸錛屼竴鍒楃敱閫楀彿鍒嗛殧鐨勫弬鏁?"
  • SOURCES = $(wildcard *.cpp) 鍒楀嚭宸ヤ綔鐩綍涓嬫枃浠跺悕婊¤凍"*.cpp"鏉′歡鐨勬枃浠訛紝浠ョ┖鏍煎垎闅旓紝騫跺皢鍒楄〃璧嬬粰SOURCE鍙橀噺
  • patsubst鍑芥暟錛?涓弬鏁般傚姛鑳芥槸灝嗙涓変釜鍙傛暟涓殑姣忎竴欏癸紙鐢辯┖鏍煎垎闅旓級絎﹀悎絎竴涓弬鏁版弿榪扮殑閮ㄥ垎鏇挎崲鎴愮浜屼釜鍙傛暟鍒跺畾鐨勫?
  • addprefix鍑芥暟錛?涓弬鏁般傚皢婧愪覆錛堢2涓弬鏁幫紝鐢辯┖鏍煎垎闅旓級涓殑姣忎竴欏規坊鍔犲墠緙錛堢1涓弬鏁幫級
  • filter-out鍑芥暟錛?涓弬鏁般備粠絎簩涓蹭腑榪囨護鎺夊寘鍚湪絎竴涓覆涓殑欏?
  • $(CC) -MM -MMD $(SOURCE) : 瀵規瘡涓簮鏂囦歡鐢熸垚渚濊禆(dependence錛孧ake閫氳繃渚濊禆瑙勫垯鏉ュ垽鏂槸鍚﹂渶瑕侀噸鏂扮紪璇戞煇涓枃浠?錛?D"鐢熸垚".d"鏂囦歡錛?MM琛ㄧず鍘繪帀 depends閲岄潰鐨勭郴緇熺殑澶存枃浠?浣跨敤<>鍖呭惈鐨勫ご鏂囦歡)錛堣嫢浣跨敤-M鍒欏叏閮ㄥ寘鍚紝浜嬪疄涓婏紝緋葷粺澶存枃浠惰淇敼鐨勫彲鑳芥ф瀬灝忥紝涓嶉渶瑕佹墽琛屼緷璧栨鏌ワ級
  • .PHONY錛屼笉媯鏌ュ悗闈㈠埗瀹氬悇欏規槸鍚﹀瓨鍦ㄥ悓鍚嶆枃浠?
  • ifneg...else...endif錛孧akefile涓殑鏉′歡璇彞
  • -include $(DEPS) : 灝咲EPS涓殑鏂囦歡鍖呭惈榪涙潵錛?-"琛ㄧず蹇界暐鏂囦歡涓嶅瓨鍦ㄧ殑閿欒
  • @$(RM) *.o : 寮澶寸殑"@"琛ㄧず鍦∕ake鐨勬椂鍊欙紝涓嶆樉紺鴻繖鏉″懡浠わ紙GNU Make緙虹渷鏄樉紺虹殑)
  • all : 浣滀負絎竴涓嚭鐜扮殑鐩爣欏圭洰錛孧ake浼氬皢瀹冧綔涓轟富瑕佸拰緙虹渷欏圭洰("make"灝辮〃紺?make all")
  • deps : 鍙敓鎴愪緷璧栨枃浠?.d鏂囦歡)
  • objs : 涓烘瘡涓涓簮鐮佺▼搴忕敓鎴愭垨鏇存柊 '.d' 鏂囦歡鍜?.o'鏂囦歡
  • clean : 鍒犻櫎鎵鏈?.d','.o'鍜屽彲鎵ц鏂囦歡
  • rebuild : clean鐒跺悗閲嶅緩
  • 鍐呴儴鍙橀噺$@, $< $^ : 鍒嗗埆琛ㄧず鐩爣鍚?:鍓嶉潰鐨勯儴鍒嗭紝姣斿all)錛屼緷闈犲垪琛紙:鍚庨潰鐨勯儴鍒嗭級涓殑絎竴涓緷闈犳枃浠訛紝鎵鏈変緷闈犳枃浠?



true 2007-04-05 12:01 鍙戣〃璇勮
]]>鍏充簬Linux涓嬬紪鍐欏拰緙栬瘧紼嬪簭鐨勫嚑涓棶棰?/title><link>http://m.shnenglu.com/true/archive/2007/04/05/21289.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Thu, 05 Apr 2007 02:34:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2007/04/05/21289.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/21289.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2007/04/05/21289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/21289.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/21289.html</trackback:ping><description><![CDATA[ <br>  · 闂仴鍕?#183;CPCW <br>   <br>  銆銆褰撳墠錛岃櫧鐒禠inux榪樹笉寰堟櫘鍙?鍦↙inux涓嬬紪鍐欏拰緙栬瘧紼嬪簭鐨勪漢涓嶅銆備絾鏄垜鐩鎬俊,闅忕潃Linux鎬ц兘鐨勪笉鏂彁鍗囧拰閫愭笎鏅強錛屼細鏈夎澶氳嚜鐢辮蔣浠跺嚭鐜幫紝涔熶細鏈夎澶氫漢鎴愪負Linux涓嬬殑紼嬪簭鍛樸傛垜緇撳悎鑷繁鐨勭粡楠岋紝浠嬬粛涓涓婰inux涓嬬紪鍐欏拰緙栬瘧紼嬪簭鎵瑕佹敞鎰忕殑鍑犱釜闂錛屽鐚粰甯屾湜涓篖inux鐨勫彂灞曚綔鍑鴻礎鐚殑浜轟滑銆?<br>   <br>   <br>  Linux涓嬫庢牱緙栬瘧紼嬪簭錛?<br>   <br>  澶у鏁癓inux紼嬪簭閮芥槸鐢盋璇█緙栧啓鐨勫茍鐢盙NU C緙栬瘧鑰屾垚銆傜幇鍦℅CC鏄悇縐嶅彂琛屽浠剁殑涓閮ㄥ垎銆傛湁鍏蟲渶鏂癎CC緙栬瘧鍣ㄧ殑鐗堟湰銆佹枃绔犲拰琛ヤ竵璇風湅ftp://ftp.gnu.org/pub/gnu/銆?<br>   <br>  鐢盋錛嬶紜緙栧啓鐨勭▼搴忓繀欏葷敱GNU C++緙栬瘧錛孏NU C++涔熸槸鍚勭鍙戣濂椾歡鐨勪竴閮ㄥ垎錛屽湪浠ヤ笂緗戝潃涔熸湁鏈鏂扮増鏈拰琛ヤ竵銆?<br>   <br>  緙栬瘧2.0.x鐨勫唴鏍擱渶瑕?.7.2.x鐗堟湰鐨凣CC錛屽鐢ㄨ薄GCC 2.8.x, EGCS, or PGCC鍒殑緙栬瘧鍣ㄧ紪璇戝唴鏍稿彲鑳戒駭鐢熶笉鍙鎯崇殑鍚庢灉銆?<br>   <br>   <br>  鎬庢牱縐繪鍏跺畠Unix紼嬪簭鍒癓inux涓婏紵 <br>   <br>  鎬誨緱鏉ヨ錛孶nix涓婄殑紼嬪簭涓嶉渶瑕佸仛鏀瑰姩錛屽彧瑕佺畝鍗曠殑鎸夌収鎻愮ず灝卞彲浠ョЩ妞嶅埌Linux涓婏紝濡傛灉瀹夎榪囩▼涓嚭鐜伴敊璇俊鎭紝鑰屼綘鍙堜笉鐭ラ亾鎬庝箞澶勭悊錛屼綘鍙互鐚滄垨鐣ュ幓錛屼笉榪囪繖鏍蜂駭鐢熺殑紼嬪簭寰寰甯︽湁bug銆傛墍浠ユ渶濂借繕鏄棶涓涓嬫湁緇忛獙鐨勪漢銆?<br>   <br>  濡傛灉瑕佷粠BSD-ish縐繪紼嬪簭錛岃瘯涓璇曞湪緙栬瘧鏃跺姞涓?I/usr/include/bsd 鍜?錛焞bsd鍛戒護銆?<br>   <br>   <br>  浠涔堟槸ld.so,浠庡摢鍙互鎵懼埌瀹冿紵 <br>   <br>  ld.so鏄姩鎬佸嚱鏁板簱瑁呰澆鍣ㄣ傝繃鍘伙紝浣跨敤鍏變韓鍑芥暟搴撶殑紼嬪簭鍦ㄥ師浠g爜寮澶翠嬌鐢ㄧ害3K鐨勭┖闂存潵瀵繪壘鍜屽姞杞藉叡浜嚱鏁板簱錛岀幇鍦紝榪欐浠g爜琚姞榪涗簡涓涓壒孌婂叡浜嚱鏁板簱/lib/ld.so錛屾墍鏈夌殑紼嬪簭閮藉彲浠ヤ嬌鐢ㄨ鍏變韓搴擄紝榪欐牱灝辮妭鐪佷簡紓佺洏絀洪棿錛岃屼笖鍗囩駭鏂逛究銆?<br>   <br>  ld.so鍙互浠庝互涓嬬綉鍧寰楀埌tsx-11.mit.edu/pub/linux/packages/GCC/銆?<br>   <br>   <br>  鎬庢牱鍗囩駭搴撳嚱鏁拌屼笉浣跨郴緇熷穿婧冿紵 <br>   <br>  娉ㄦ剰錛氳繘琛屾鎿嶄綔搴旇鍏繪垚鍋氬浠界殑涔犳儻錛屽洜涓鴻繖欏規搷浣滃緢瀹規槗鍑洪敊銆?<br>   <br>  濡傛灉浣犲崌綰ц薄libc4榪欐牱鐨勮佸嚱鏁板簱錛岃繖涓繃紼嬩細鍙樺緱闈炲父鍥伴毦銆傝屼笖浣犲簲璇ュ湪璇ョ郴緇熶笂璁﹍ibc4鍜宭ibc5鍏卞瓨錛屽洜涓猴紝鏈変簺鑰佺▼搴忚繕闇瑕佸畠銆傚崌綰ibc5涔熶竴鏍楓?<br>   <br>  鍗囩駭鍔ㄦ佸簱鐨勯棶棰樺父鍑虹幇鍦ㄥ綋浣犵Щ璧拌佺殑鍑芥暟搴撴椂錛岀敤鏉ュ崌綰х殑紼嬪簭涔熻繍琛屼笉浜嗕簡銆傛湁璁稿鏂規硶鍙互瑙e喅榪欎釜闂銆備竴涓柟娉曞氨鏄殏鏃跺浠戒竴涓嬭繍琛岀▼搴忔墍闇鍑芥暟搴擄紝瀹冧滑涓鑸湪/lib/銆?usr/lib/銆?/usr/local/lib/銆佹垨鍏跺畠鐨勫湴鏂癸紝鍦ㄦ枃浠?etc/ld.so.conf涓兘鏈夎緇嗚褰曘?<br>   <br>  渚嬪錛屽綋浣犲崌綰ibc5鏃訛紝鐩綍/lib/涓湁濡備笅鏂囦歡 <br>   <br>  libc.so.5 <br>   <br>  libc.so.5.4.33 <br>   <br>  libm.so.5 <br>   <br>  libm.so.5.0.9 <br>   <br>  榪欎簺鏄疌鍑芥暟搴撳拰鏁板搴擄紝鎷瘋礉瀹冧滑鍒版枃浠?etc/ld.so.conf涓惈鏈夌殑鍏跺畠鐨勭洰褰曪紝濡?usr/lib/涓細 <br>   <br>  cp -df /lib/libc.so.5* /usr/lib/ <br>   <br>  cp -df /lib/libm.so.5* /usr/lib/ <br>   <br>  ldconfig <br>   <br>  涓瀹氳璁頒綇榪愯ldconfig鏉ュ崌綰у嚱鏁板簱鐨勯厤緗枃浠躲?<br>   <br>  鏂囦歡libc.so.5 鍜?libm.so.5鏄疄闄呭簱鏂囦歡鐨勯摼鎺ユ枃浠訛紝褰撲綘鍗囩駭鐨勬椂鍊欙紝濡傛灉鑰佺殑閾炬帴鏂囦歡瀛樺湪錛屾柊鐨勯摼鎺ヤ笉浼氫駭鐢燂紝闄ら潪浣犱嬌鐢–P鍛戒護鐨?f閫夐」銆侰P鐨?d閫夐」鍙鍒墮摼鎺ユ枃浠訛紝涓嶅鍒跺師鏂囦歡銆?<br>   <br>  濡傛灉浣犻渶瑕佺洿鎺ヨ鐩栭摼鎺ワ紝浣跨敤ln鍛戒護鐨勯夐」-f銆?<br>   <br>  渚嬪錛屾嫹璐濇柊鐨勫簱鍑芥暟瑕嗙洊鏃х殑銆傚厛瀵規柊鐨勫嚱鏁板簱鍋氫竴涓摼鎺ワ紝鐒跺悗鎶婂嚱鏁板簱鍜岄摼鎺ヤ竴璧鋒嫹璐濆埌/lib/涓紝鍛戒護濡備笅錛?<br>   <br>  ln -sf ./libm.so.5.0.48 libm.so.5 <br>   <br>  ln -sf ./libc.so.5.0.48 libc.so.5 <br>   <br>  cp -df libm.so.5* /lib <br>   <br>  cp -df libc.so.5* /lib <br>   <br>  閲嶇敵涓涓嬶紝鎷瘋礉瀹屽埆蹇樿榪愯ldconfig. <br>   <br>  濡傛灉涓鍒囧伐浣滈『鍒╃殑璇濓紝浣犲彲浠ュ垹闄よ佺殑鍑芥暟搴撶殑澶囦喚銆?<br>   <br>   <br>  鎴戣兘鍚︽妸鍦?86涓婄紪璇戠殑浠g爜鎴栫紪璇戝櫒鎷垮埌386涓婄敤錛?<br>   <br>  褰撶劧錛岄櫎闈炰綘緙栬瘧鐨勬槸鍐呮牳銆?<br>   <br>  GCC鐢ㄦ潵鍦?86涓婄紪璇戠殑閫夐」-m486 鍙槸浼樺寲浜嗘墍緙栬瘧紼嬪簭錛屼嬌鍏惰繍琛屽揩涓浜涖傝繖浜涚紪璇戠殑紼嬪簭浠嶈兘寰堝ソ鐨勫湪386涓婅繍琛岋紝鍙槸鏁堟灉宸竴浜涖?<br>   <br>  鐒惰岋紝浠庡唴鏍?.3.35浠ュ悗錛岄噰鐢?86鎴朠entium閫夐」緙栬瘧鐨勫唴鏍鎬笉鑳界敤浜?86鐨勬満鍣ㄣ?<br>   <br>  GCC鍙互閽堝386鍜?86榪涜閰嶇疆銆備袱鑰呭尯鍒湪浜庯紝閽堝386閰嶇疆鐨凣CC鎶?m386浣滀負緙虹渷閫夐」錛岃岄拡瀵?86閰嶇疆鐨凣CC鎶?m486浣滀負緙虹渷閫夐」錛屼粎姝よ屽凡銆?<br>   <br>   <br>  gcc -O6鍙互騫蹭粈涔堬紵 <br>   <br>  鐩墠錛屽畠鍜?-O2 (GCC 2.5) 鎴?-O3 (GCC 2.6, 2.7)鍔熻兘涓鏍鳳紝鎵鏈夌増鏈ぇ浜庡畠鐨勫姛鑳戒篃涓鏍楓傛柊鐗堝唴鏍哥殑Makefiles浣跨敤錛峅2錛屾墍浠ヤ綘涔熷簲璇ョ敤錛峅2銆?<br>   <br>   <br>  linux/*.h 鍜宎sm/*.h鍦ㄤ粈涔堝湴鏂癸紵 <br>   <br>  鐩綍 /usr/include/linux/ 鍜?/usr/include/asm/浣庝笅鐨勬枃浠舵槸鍐呮牳澶存枃浠剁殑杞摼鎺ワ紝鍐呮牳澶存枃浠跺叾瀹炲湪鐩綍/usr/src/kernel*/浣庝笅銆?<br>   <br>   <br>  鎬庢牱浣滀竴涓叡浜嚱鏁板簱錛?<br>   <br>  瀵笶LF, 鍛戒護濡備笅錛?<br>   <br>  gcc -fPIC -c *.c <br>   <br>  gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o <br>   <br>  瀵筧.out錛屼粠 http://tsx-11.mit.edu/pub/linux/packages/GCC/src/ 涓嬭澆n.nn.tar.gz錛屽叾涓寘鍚緇嗚鏄庛傚緩璁綘灝嗗叡浜簱鐢盿.out鍗囩駭涓篍LF銆?<br>   <br>   <br>  涓轟粈涔堟垜緙栬瘧鐨勫彲鎵ц紼嬪簭闈炲父澶э紵 <br>   <br>  鐢‥LF緙栬瘧鍣紝鐢熸垚鍙墽琛岀▼搴忓お澶ф渶鍙兘鐨勫師鍥犳槸娌℃湁鍚堥傜殑.so搴撲笌浣犱嬌鐢ㄧ殑搴撳嚱鏁伴摼鎺ャ傚姣忎竴涓薄libc.so.5.2.18鐨勫嚱鏁板簱錛屽簲璇ユ湁涓涓薄libc.so鐨勯摼鎺ャ?<br>   <br>  鐢╝.out緙栬瘧鍣紝鐢熸垚鍙墽琛岀▼搴忓お澶у彲鑳芥槸浣跨敤浜?g閫夐」錛岃繖浼氱敓鎴愰潤鎬侀摼鎺ュ簱鑰屼笉鏄姩鎬侀摼鎺ュ簱銆?<br>   <br>   <br>  浠庡摢鍙互寰楀埌瀵逛簬Linux鐨?#8216;lint’錛?<br>   <br>  澶ч儴鍒?#8216;lint’鐨勫姛鑳藉凡緇忓唴緗繘浜咷CC錛屾墦寮GCC鐨?Wall閫夐」浼氭墦寮璁稿鏈夌敤鐨勫閮ㄨ鍛娿?<br>   <br>  榪樻湁涓涓彨`lclint'鐨勮蔣浠跺姛鑳藉拰浼犵粺鐨刲int宸笉澶氾紝鍘熶唬鐮佸彲浠ュ湪http://larch.lcs.mit.edu /pub/Larch/lclint/涓壘鍒般?<br>    鍋氫漢瑕佸帤閬擄紝璇鋒敞鏄庤漿鑷叿緗戝姩鍔?www.ASPCOOL.COM)銆?<br> <img src ="http://m.shnenglu.com/true/aggbug/21289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2007-04-05 10:34 <a href="http://m.shnenglu.com/true/archive/2007/04/05/21289.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍦↙inux涓垱寤洪潤鎬佸簱鍜屽姩鎬佸簱 銆愯漿銆?/title><link>http://m.shnenglu.com/true/archive/2007/04/04/21256.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Wed, 04 Apr 2007 10:22:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2007/04/04/21256.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/21256.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2007/04/04/21256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/21256.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/21256.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 20pt">鎴戜滑閫氬父鎶婁竴浜涘叕鐢ㄥ嚱鏁板埗浣滄垚鍑芥暟搴擄紝渚涘叾瀹冪▼搴忎嬌鐢ㄣ傚嚱鏁板簱鍒嗕負闈欐佸簱鍜屽姩鎬佸簱涓ょ銆傞潤鎬佸簱鍦ㄧ▼搴忕紪璇戞椂浼氳榪炴帴鍒扮洰鏍囦唬鐮佷腑錛岀▼搴忚繍琛屾椂灝嗕笉鍐嶉渶瑕佽闈欐佸簱銆傚姩鎬佸簱鍦ㄧ▼搴忕紪璇戞椂騫朵笉浼氳榪炴帴鍒扮洰鏍囦唬鐮佷腑錛岃屾槸鍦ㄧ▼搴忚繍琛屾槸鎵嶈杞藉叆錛屽洜姝ゅ湪紼嬪簭榪愯鏃惰繕闇瑕佸姩鎬佸簱瀛樺湪銆傛湰鏂囦富瑕侀氳繃涓句緥鏉ヨ鏄庡湪Linux涓浣曞垱寤洪潤鎬佸簱鍜屽姩鎬佸簱錛屼互鍙婁嬌鐢ㄥ畠浠?</p> <p style="TEXT-INDENT: 20pt">鍦ㄥ垱寤哄嚱鏁板簱鍓嶏紝鎴戜滑鍏堟潵鍑嗗涓句緥鐢ㄧ殑婧愮▼搴忥紝騫跺皢鍑芥暟搴撶殑婧愮▼搴忕紪璇戞垚.o鏂囦歡銆?</p> <p style="TEXT-INDENT: 20pt">絎?姝ワ細緙栬緫寰楀埌涓句緥鐨勭▼搴?-hello.h銆乭ello.c鍜宮ain.c錛?</p> <p style="TEXT-INDENT: 20pt">hello.c(瑙佺▼搴?)鏄嚱鏁板簱鐨勬簮紼嬪簭錛屽叾涓寘鍚叕鐢ㄥ嚱鏁癶ello錛岃鍑芥暟灝嗗湪灞忓箷涓婅緭鍑?Hello XXX!"銆俬ello.h(瑙佺▼搴?)涓鴻鍑芥暟搴撶殑澶存枃浠躲俶ain.c(瑙佺▼搴?)涓烘祴璇曞簱鏂囦歡鐨勪富紼嬪簭錛屽湪涓葷▼搴忎腑璋冪敤浜嗗叕鐢ㄥ嚱鏁癶ello銆?</p>  #ifndef HELLO_H<br> #define HELLO_H<br> <br> void hello(const char *name);<br> <br> #endif //HELLO_H<br> 紼嬪簭1: hello.h<br> <br> #include <stdio.h><br> <br> void hello(const char *name)<br> {<br>  printf("Hello %s!\n", name);<br> }<br> 紼嬪簭2: hello.c<br> <br> #include "hello.h"<br> <br> int main()<br> {<br>  hello("everyone");<br>  return 0;<br> }<br> 紼嬪簭3: main.c<br> <p style="TEXT-INDENT: 20pt">絎?姝ワ細灝唄ello.c緙栬瘧鎴?o鏂囦歡錛?</p> <p style="TEXT-INDENT: 20pt">鏃犺闈欐佸簱錛岃繕鏄姩鎬佸簱錛岄兘鏄敱.o鏂囦歡鍒涘緩鐨勩傚洜姝わ紝鎴戜滑蹇呴』灝嗘簮紼嬪簭hello.c閫氳繃gcc鍏堢紪璇戞垚.o鏂囦歡銆?</p> <p style="TEXT-INDENT: 20pt">鍦ㄧ郴緇熸彁紺虹涓嬮敭鍏ヤ互涓嬪懡浠ゅ緱鍒癶ello.o鏂囦歡銆?</p> <p style="TEXT-INDENT: 40pt"># gcc -c hello.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">(娉?錛氭湰鏂囦笉浠嬬粛鍚勫懡浠や嬌鐢ㄥ拰鍏跺弬鏁板姛鑳斤紝鑻ュ笇鏈涜緇嗕簡瑙e畠浠紝璇峰弬鑰冨叾浠栨枃妗c? </p> <p style="TEXT-INDENT: 20pt">(娉?錛氶瀛楃"#"鏄郴緇熸彁紺虹錛屼笉闇瑕侀敭鍏ワ紝涓嬫枃鐩稿悓銆? </p> <p style="TEXT-INDENT: 20pt">鎴戜滑榪愯ls鍛戒護鐪嬬湅鏄惁鐢熷瓨浜唄ello.o鏂囦歡銆?</p> <p style="TEXT-INDENT: 40pt"># ls </p> <p style="TEXT-INDENT: 40pt">hello.c hello.h hello.o main.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">(娉?錛氶瀛楃涓嶆槸"#"涓虹郴緇熻繍琛岀粨鏋滐紝涓嬫枃鐩稿悓銆? </p> <p style="TEXT-INDENT: 20pt">鍦╨s鍛戒護緇撴灉涓紝鎴戜滑鐪嬪埌浜唄ello.o鏂囦歡錛屾湰姝ユ搷浣滃畬鎴愩?</p> <p style="TEXT-INDENT: 20pt">涓嬮潰鎴戜滑鍏堟潵鐪嬬湅濡備綍鍒涘緩闈欐佸簱錛屼互鍙婁嬌鐢ㄥ畠銆?</p> <p style="TEXT-INDENT: 20pt">絎?姝ワ細鐢?o鏂囦歡鍒涘緩闈欐佸簱錛?</p> <p style="TEXT-INDENT: 20pt">闈欐佸簱鏂囦歡鍚嶇殑鍛藉悕瑙勮寖鏄互lib涓哄墠緙錛岀揣鎺ョ潃璺熼潤鎬佸簱鍚嶏紝鎵╁睍鍚嶄負.a銆備緥濡傦細鎴戜滑灝嗗垱寤虹殑闈欐佸簱鍚嶄負myhello錛屽垯闈欐佸簱鏂囦歡鍚嶅氨鏄痩ibmyhello.a銆傚湪鍒涘緩鍜屼嬌鐢ㄩ潤鎬佸簱鏃訛紝闇瑕佹敞鎰忚繖鐐廣傚垱寤洪潤鎬佸簱鐢╝r鍛戒護銆?</p> <p style="TEXT-INDENT: 20pt">鍦ㄧ郴緇熸彁紺虹涓嬮敭鍏ヤ互涓嬪懡浠ゅ皢鍒涘緩闈欐佸簱鏂囦歡libmyhello.a銆?</p> <p style="TEXT-INDENT: 40pt"># ar cr libmyhello.a hello.o </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鎴戜滑鍚屾牱榪愯ls鍛戒護鏌ョ湅緇撴灉錛?</p> <p style="TEXT-INDENT: 40pt"># ls </p> <p style="TEXT-INDENT: 40pt">hello.c hello.h hello.o libmyhello.a main.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">ls鍛戒護緇撴灉涓湁libmyhello.a銆?</p> <p style="TEXT-INDENT: 20pt">絎?姝ワ細鍦ㄧ▼搴忎腑浣跨敤闈欐佸簱錛?</p> <p style="TEXT-INDENT: 20pt">闈欐佸簱鍒朵綔瀹屼簡錛屽浣曚嬌鐢ㄥ畠鍐呴儴鐨勫嚱鏁板憿錛熷彧闇瑕佸湪浣跨敤鍒拌繖浜涘叕鐢ㄥ嚱鏁扮殑婧愮▼搴忎腑鍖呭惈榪欎簺鍏敤鍑芥暟鐨勫師鍨嬪0鏄庯紝鐒跺悗鍦ㄧ敤gcc鍛戒護鐢熸垚鐩爣鏂囦歡鏃舵寚鏄庨潤鎬佸簱鍚嶏紝gcc灝嗕細浠庨潤鎬佸簱涓皢鍏敤鍑芥暟榪炴帴鍒扮洰鏍囨枃浠朵腑銆傛敞鎰忥紝gcc浼氬湪闈欐佸簱鍚嶅墠鍔犱笂鍓嶇紑lib錛岀劧鍚庤拷鍔犳墿灞曞悕.a寰楀埌鐨勯潤鎬佸簱鏂囦歡鍚嶆潵鏌ユ壘闈欐佸簱鏂囦歡銆?</p> <p style="TEXT-INDENT: 20pt">鍦ㄧ▼搴?:main.c涓紝鎴戜滑鍖呭惈浜嗛潤鎬佸簱鐨勫ご鏂囦歡hello.h錛岀劧鍚庡湪涓葷▼搴弇ain涓洿鎺ヨ皟鐢ㄥ叕鐢ㄥ嚱鏁癶ello銆備笅闈㈠厛鐢熸垚鐩爣紼嬪簭hello錛岀劧鍚庤繍琛宧ello紼嬪簭鐪嬬湅緇撴灉濡備綍銆?</p> <p style="TEXT-INDENT: 40pt"># gcc -o hello main.c -L. -lmyhello </p> <p style="TEXT-INDENT: 40pt"># ./hello </p> <p style="TEXT-INDENT: 40pt">Hello everyone! </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鎴戜滑鍒犻櫎闈欐佸簱鏂囦歡璇曡瘯鍏敤鍑芥暟hello鏄惁鐪熺殑榪炴帴鍒扮洰鏍囨枃浠?hello涓簡銆?</p> <p style="TEXT-INDENT: 40pt"># rm libmyhello.a </p> <p style="TEXT-INDENT: 40pt">rm: remove regular file `libmyhello.a'? y </p> <p style="TEXT-INDENT: 40pt"># ./hello </p> <p style="TEXT-INDENT: 40pt">Hello everyone! </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">紼嬪簭鐓у父榪愯錛岄潤鎬佸簱涓殑鍏敤鍑芥暟宸茬粡榪炴帴鍒扮洰鏍囨枃浠朵腑浜嗐?</p> <p style="TEXT-INDENT: 20pt">鎴戜滑緇х畫鐪嬬湅濡備綍鍦↙inux涓垱寤哄姩鎬佸簱銆傛垜浠繕鏄粠.o鏂囦歡寮濮嬨?</p> <p style="TEXT-INDENT: 20pt">絎?姝ワ細鐢?o鏂囦歡鍒涘緩鍔ㄦ佸簱鏂囦歡錛?</p> <p style="TEXT-INDENT: 20pt">鍔ㄦ佸簱鏂囦歡鍚嶅懡鍚嶈鑼冨拰闈欐佸簱鏂囦歡鍚嶅懡鍚嶈鑼冪被浼鹼紝涔熸槸鍦ㄥ姩鎬佸簱鍚嶅鍔犲墠緙lib錛屼絾鍏舵枃浠舵墿灞曞悕涓?so銆備緥濡傦細鎴戜滑灝嗗垱寤虹殑鍔ㄦ佸簱鍚嶄負myhello錛屽垯鍔ㄦ佸簱鏂囦歡鍚嶅氨鏄痩ibmyhello.so銆傜敤gcc鏉ュ垱寤哄姩鎬佸簱銆?</p> <p style="TEXT-INDENT: 20pt">鍦ㄧ郴緇熸彁紺虹涓嬮敭鍏ヤ互涓嬪懡浠ゅ緱鍒板姩鎬佸簱鏂囦歡libmyhello.so銆?</p> <p style="TEXT-INDENT: 40pt"># gcc -shared -fPCI -o libmyhello.so hello.o </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鎴戜滑鐓ф牱浣跨敤ls鍛戒護鐪嬬湅鍔ㄦ佸簱鏂囦歡鏄惁鐢熸垚銆?</p> <p style="TEXT-INDENT: 40pt"># ls </p> <p style="TEXT-INDENT: 40pt">hello.c hello.h hello.o libmyhello.so main.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">絎?姝ワ細鍦ㄧ▼搴忎腑浣跨敤鍔ㄦ佸簱錛?</p> <p style="TEXT-INDENT: 20pt">鍦ㄧ▼搴忎腑浣跨敤鍔ㄦ佸簱鍜屼嬌鐢ㄩ潤鎬佸簱瀹屽叏涓鏍鳳紝涔熸槸鍦ㄤ嬌鐢ㄥ埌榪欎簺鍏敤鍑芥暟鐨勬簮紼嬪簭涓寘鍚繖浜涘叕鐢ㄥ嚱鏁扮殑鍘熷瀷澹版槑錛岀劧鍚庡湪鐢╣cc鍛戒護鐢熸垚鐩爣鏂囦歡鏃舵寚鏄庡姩鎬佸簱鍚嶈繘琛岀紪璇戙傛垜浠厛榪愯gcc鍛戒護鐢熸垚鐩爣鏂囦歡錛屽啀榪愯瀹冪湅鐪嬬粨鏋溿?</p> <p style="TEXT-INDENT: 40pt"># gcc -o hello main.c -L. -lmyhello </p> <p style="TEXT-INDENT: 40pt"># ./hello </p> <p style="TEXT-INDENT: 40pt">./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鍝︼紒鍑洪敊浜嗐傚揩鐪嬬湅閿欒鎻愮ず錛屽師鏉ユ槸鎵句笉鍒板姩鎬佸簱鏂囦歡libmyhello.so銆傜▼搴忓湪榪愯鏃訛紝浼氬湪/usr/lib鍜?lib絳夌洰褰曚腑鏌ユ壘闇瑕佺殑鍔ㄦ佸簱鏂囦歡銆傝嫢鎵懼埌錛屽垯杞藉叆鍔ㄦ佸簱錛屽惁鍒欏皢鎻愮ず綾諱技涓婅堪閿欒鑰岀粓姝㈢▼搴忚繍琛屻傛垜浠皢鏂囦歡libmyhello.so澶嶅埗鍒扮洰褰?usr/lib涓紝鍐嶈瘯璇曘?</p> <p style="TEXT-INDENT: 40pt"># mv libmyhello.so /usr/lib </p> <p style="TEXT-INDENT: 40pt"># ./hello </p> <p style="TEXT-INDENT: 40pt">Hello everyone! </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鎴愬姛浜嗐傝繖涔熻繘涓姝ヨ鏄庝簡鍔ㄦ佸簱鍦ㄧ▼搴忚繍琛屾椂鏄渶瑕佺殑銆?</p> <p style="TEXT-INDENT: 20pt">鎴戜滑鍥炶繃澶寸湅鐪嬶紝鍙戠幇浣跨敤闈欐佸簱鍜屼嬌鐢ㄥ姩鎬佸簱緙栬瘧鎴愮洰鏍囩▼搴忎嬌鐢ㄧ殑gcc鍛戒護瀹屽叏涓鏍鳳紝閭e綋闈欐佸簱鍜屽姩鎬佸簱鍚屽悕鏃訛紝gcc鍛戒護浼氫嬌鐢ㄥ摢涓簱鏂囦歡鍛紵鎶辯潃瀵歸棶棰樺繀絀跺埌搴曠殑蹇冩儏錛屾潵璇曡瘯鐪嬨?</p> <p style="TEXT-INDENT: 20pt">鍏堝垹闄ら櫎.c鍜?h澶栫殑鎵鏈夋枃浠訛紝鎭㈠鎴愭垜浠垰鍒氱紪杈戝畬涓句緥紼嬪簭鐘舵併?</p> <p style="TEXT-INDENT: 40pt"># rm -f hello hello.o /usr/lib/libmyhello.so </p> <p style="TEXT-INDENT: 40pt"># ls </p> <p style="TEXT-INDENT: 40pt">hello.c hello.h main.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">鍦ㄦ潵鍒涘緩闈欐佸簱鏂囦歡libmyhello.a鍜屽姩鎬佸簱鏂囦歡libmyhello.so銆?</p> <p style="TEXT-INDENT: 40pt"># gcc -c hello.c </p> <p style="TEXT-INDENT: 40pt"># ar cr libmyhello.a hello.o </p> <p style="TEXT-INDENT: 40pt"># gcc -shared -fPCI -o libmyhello.so hello.o </p> <p style="TEXT-INDENT: 40pt"># ls </p> <p style="TEXT-INDENT: 40pt">hello.c hello.h hello.o libmyhello.a libmyhello.so main.c </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">閫氳繃涓婅堪鏈鍚庝竴鏉s鍛戒護錛屽彲浠ュ彂鐜伴潤鎬佸簱鏂囦歡libmyhello.a鍜屽姩鎬佸簱鏂囦歡libmyhello.so閮藉凡緇忕敓鎴愶紝騫墮兘鍦ㄥ綋鍓嶇洰褰曚腑銆傜劧鍚庯紝鎴戜滑榪愯gcc鍛戒護鏉ヤ嬌鐢ㄥ嚱鏁板簱myhello鐢熸垚鐩爣鏂囦歡hello錛屽茍榪愯紼嬪簭 hello銆?</p> <p style="TEXT-INDENT: 40pt"># gcc -o hello main.c -L. -lmyhello </p> <p style="TEXT-INDENT: 40pt"># ./hello </p> <p style="TEXT-INDENT: 40pt">./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory </p> <p style="TEXT-INDENT: 40pt"># </p> <p style="TEXT-INDENT: 20pt">浠庣▼搴廻ello榪愯鐨勭粨鏋滀腑寰堝鏄撶煡閬擄紝褰撻潤鎬佸簱鍜屽姩鎬佸簱鍚屽悕鏃訛紝 gcc鍛戒護灝嗕紭鍏堜嬌鐢ㄥ姩鎬佸簱銆?</p> <img src ="http://m.shnenglu.com/true/aggbug/21256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2007-04-04 18:22 <a href="http://m.shnenglu.com/true/archive/2007/04/04/21256.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>榪涚▼鍜岀嚎紼嬬紪紼嬶紞linux鏂歸潰錛岃漿http://m.shnenglu.com/true/archive/2007/03/27/20712.htmltruetrueTue, 27 Mar 2007 08:28:00 GMThttp://m.shnenglu.com/true/archive/2007/03/27/20712.htmlhttp://m.shnenglu.com/true/comments/20712.htmlhttp://m.shnenglu.com/true/archive/2007/03/27/20712.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/20712.htmlhttp://m.shnenglu.com/true/services/trackbacks/20712.html闃呰鍏ㄦ枃

true 2007-03-27 16:28 鍙戣〃璇勮
]]>
Linux鐜榪涚▼闂撮氫俊[杞琞http://m.shnenglu.com/true/archive/2007/03/27/20711.htmltruetrueTue, 27 Mar 2007 08:26:00 GMThttp://m.shnenglu.com/true/archive/2007/03/27/20711.htmlhttp://m.shnenglu.com/true/comments/20711.htmlhttp://m.shnenglu.com/true/archive/2007/03/27/20711.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/20711.htmlhttp://m.shnenglu.com/true/services/trackbacks/20711.html

Linux鐜榪涚▼闂撮氫俊錛堜笁錛?/h1>

娑堟伅闃熷垪

developerWorks

鏈樉紺洪渶瑕?JavaScript 鐨勬枃妗i夐」



綰у埆: 鍒濈駭

閮戝濺鍏?/font> (mlinux@163.com)鍥介槻縐戝ぇ璁$畻鏈哄闄?br />

2003 騫?1 鏈?17 鏃?/p>

鏈郴鍒楁枃绔犱腑鐨勫墠涓ら儴鍒嗭紝鎴戜滑鎺㈣綆¢亾鍙婁俊鍙蜂袱縐嶉氫俊鏈哄埗錛屾湰鏂囧皢娣卞叆絎笁閮ㄥ垎錛屼粙緇嶇郴緇?V 娑堟伅闃熷垪鍙婂叾鐩稿簲 API銆?/blockquote>

娑堟伅闃熷垪錛堜篃鍙仛鎶ユ枃闃熷垪錛夎兘澶熷厠鏈嶆棭鏈焨nix閫氫俊鏈哄埗鐨勪竴浜涚己鐐廣備綔涓烘棭鏈焨nix閫氫俊鏈哄埗涔嬩竴鐨勪俊鍙瘋兘澶熶紶閫佺殑淇℃伅閲忔湁闄愶紝鍚庢潵铏界劧POSIX 1003.1b鍦ㄤ俊鍙風殑瀹炴椂鎬ф柟闈綔浜嗘嫇騫匡紝浣垮緱淇″彿鍦ㄤ紶閫掍俊鎭噺鏂歸潰鏈変簡鐩稿綋紼嬪害鐨勬敼榪涳紝浣嗘槸淇″彿榪欑閫氫俊鏂瑰紡鏇村儚"鍗蟲椂"鐨勯氫俊鏂瑰紡錛屽畠瑕佹眰鎺ュ彈淇″彿鐨勮繘紼嬪湪鏌愪釜鏃墮棿鑼冨洿鍐呭淇″彿鍋氬嚭鍙嶅簲錛屽洜姝よ淇″彿鏈澶氬湪鎺ュ彈淇″彿榪涚▼鐨勭敓鍛藉懆鏈熷唴鎵嶆湁鎰忎箟錛屼俊鍙鋒墍浼犻掔殑淇℃伅鏄帴榪戜簬闅忚繘紼嬫寔緇殑姒傚康錛坧rocess-persistent錛夛紝瑙?闄勫綍 1錛涚閬撳強鏈夊悕綆¢亾鍙婃湁鍚嶇閬撳垯鏄吀鍨嬬殑闅忚繘紼嬫寔緇璉PC錛屽茍涓旓紝鍙兘浼犻佹棤鏍煎紡鐨勫瓧鑺傛祦鏃犵枒浼氱粰搴旂敤紼嬪簭寮鍙戝甫鏉ヤ笉渚匡紝鍙﹀錛屽畠鐨勭紦鍐插尯澶у皬涔熷彈鍒伴檺鍒躲?

娑堟伅闃熷垪灝辨槸涓涓秷鎭殑閾捐〃銆傚彲浠ユ妸娑堟伅鐪嬩綔涓涓褰曪紝鍏鋒湁鐗瑰畾鐨勬牸寮忎互鍙婄壒瀹氱殑浼樺厛綰с傚娑堟伅闃熷垪鏈夊啓鏉冮檺鐨勮繘紼嬪彲浠ュ悜涓寜鐓т竴瀹氱殑瑙勫垯娣誨姞鏂版秷鎭紱瀵規秷鎭槦鍒楁湁璇繪潈闄愮殑榪涚▼鍒欏彲浠ヤ粠娑堟伅闃熷垪涓璧版秷鎭傛秷鎭槦鍒楁槸闅忓唴鏍告寔緇殑錛堝弬瑙?闄勫綍 1錛夈?

鐩墠涓昏鏈変袱縐嶇被鍨嬬殑娑堟伅闃熷垪錛歅OSIX娑堟伅闃熷垪浠ュ強緋葷粺V娑堟伅闃熷垪錛岀郴緇烿娑堟伅闃熷垪鐩墠琚ぇ閲忎嬌鐢ㄣ傝冭檻鍒扮▼搴忕殑鍙Щ妞嶆э紝鏂板紑鍙戠殑搴旂敤紼嬪簭搴斿敖閲忎嬌鐢≒OSIX娑堟伅闃熷垪銆?/p>

鍦ㄦ湰緋誨垪涓撻鐨勫簭錛堟繁鍒葷悊瑙inux榪涚▼闂撮氫俊錛圛PC錛夛級涓紝鎻愬埌瀵逛簬娑堟伅闃熷垪銆佷俊鍙風伅銆佷互鍙婂叡浜唴瀛樺尯鏉ヨ錛屾湁涓や釜瀹炵幇鐗堟湰錛歅OSIX鐨勪互鍙婄郴緇烿鐨勩侺inux鍐呮牳錛堝唴鏍?.4.18錛夋敮鎸丳OSIX淇″彿鐏丳OSIX鍏變韓鍐呭瓨鍖轟互鍙奝OSIX娑堟伅闃熷垪錛屼絾瀵逛簬涓繪祦Linux鍙戣鐗堟湰涔嬩竴redhad8.0錛堝唴鏍?.4.18錛夛紝榪樻病鏈夋彁渚涘POSIX榪涚▼闂撮氫俊API鐨勬敮鎸侊紝涓嶈繃搴旇鍙槸鏃墮棿涓婄殑浜嬨?/p>

鍥犳錛屾湰鏂囧皢涓昏浠嬬粛緋葷粺V娑堟伅闃熷垪鍙婂叾鐩稿簲API銆?鍦ㄦ病鏈夊0鏄庣殑鎯呭喌涓嬶紝浠ヤ笅璁ㄨ涓寚鐨勯兘鏄郴緇烿娑堟伅闃熷垪銆?/b>

涓銆佹秷鎭槦鍒楀熀鏈蹇?/span>

  1. 緋葷粺V娑堟伅闃熷垪鏄殢鍐呮牳鎸佺畫鐨勶紝鍙湁鍦ㄥ唴鏍擱噸璧鋒垨鑰呮樉紺哄垹闄や竴涓秷鎭槦鍒楁椂錛岃娑堟伅闃熷垪鎵嶄細鐪熸琚垹闄ゃ傚洜姝ょ郴緇熶腑璁板綍娑堟伅闃熷垪鐨勬暟鎹粨鏋勶紙struct ipc_ids msg_ids錛変綅浜庡唴鏍鎬腑錛岀郴緇熶腑鐨勬墍鏈夋秷鎭槦鍒楅兘鍙互鍦ㄧ粨鏋刴sg_ids涓壘鍒拌闂叆鍙c?
  2. 娑堟伅闃熷垪灝辨槸涓涓秷鎭殑閾捐〃銆傛瘡涓秷鎭槦鍒楅兘鏈変竴涓槦鍒楀ご錛岀敤緇撴瀯struct msg_queue鏉ユ弿榪幫紙鍙傝 闄勫綍 2錛夈傞槦鍒楀ご涓寘鍚簡璇ユ秷鎭槦鍒楃殑澶ч噺淇℃伅錛屽寘鎷秷鎭槦鍒楅敭鍊箋佺敤鎴稩D銆佺粍ID銆佹秷鎭槦鍒椾腑娑堟伅鏁扮洰絳夌瓑錛岀敋鑷寵褰曚簡鏈榪戝娑堟伅闃熷垪璇誨啓榪涚▼鐨処D銆傝鑰呭彲浠ヨ闂繖浜涗俊鎭紝涔熷彲浠ヨ緗叾涓殑鏌愪簺淇℃伅銆?
  3. 涓嬪浘璇存槑浜嗗唴鏍鎬笌娑堟伅闃熷垪鏄庢牱寤虹珛璧瘋仈緋葷殑錛?
    鍏朵腑錛歴truct ipc_ids msg_ids鏄唴鏍鎬腑璁板綍娑堟伅闃熷垪鐨勫叏灞鏁版嵁緇撴瀯錛泂truct msg_queue鏄瘡涓秷鎭槦鍒楃殑闃熷垪澶淬?


浠庝笂鍥懼彲浠ョ湅鍑猴紝鍏ㄥ眬鏁版嵁緇撴瀯 struct ipc_ids msg_ids 鍙互璁塊棶鍒版瘡涓秷鎭槦鍒楀ご鐨勭涓涓垚鍛橈細struct kern_ipc_perm錛涜屾瘡涓猻truct kern_ipc_perm鑳藉涓庡叿浣撶殑娑堟伅闃熷垪瀵瑰簲璧鋒潵鏄洜涓哄湪璇ョ粨鏋勪腑錛屾湁涓涓猭ey_t綾誨瀷鎴愬憳key錛岃宬ey鍒欏敮涓紜畾涓涓秷鎭槦鍒椼俴ern_ipc_perm緇撴瀯濡備笅錛?/p>
struct kern_ipc_perm{   //鍐呮牳涓褰曟秷鎭槦鍒楃殑鍏ㄥ眬鏁版嵁緇撴瀯msg_ids鑳藉璁塊棶鍒拌緇撴瀯錛?
            key_t   key;    //璇ラ敭鍊煎垯鍞竴瀵瑰簲涓涓秷鎭槦鍒?
            uid_t   uid;
            gid_t   gid;
uid_t   cuid;
gid_t   cgid;
mode_t  mode;
unsigned long seq;
}





鍥為〉棣?/font>


浜屻佹搷浣滄秷鎭槦鍒?/span>

瀵規秷鎭槦鍒楃殑鎿嶄綔鏃犻潪鏈変笅闈笁縐嶇被鍨嬶細

1銆?鎵撳紑鎴栧垱寤烘秷鎭槦鍒?
娑堟伅闃熷垪鐨勫唴鏍告寔緇ц姹傛瘡涓秷鎭槦鍒楅兘鍦ㄧ郴緇熻寖鍥村唴瀵瑰簲鍞竴鐨勯敭鍊鹼紝鎵浠ワ紝瑕佽幏寰椾竴涓秷鎭槦鍒楃殑鎻忚堪瀛楋紝鍙渶鎻愪緵璇ユ秷鎭槦鍒楃殑閿煎嵆鍙紱

娉細娑堟伅闃熷垪鎻忚堪瀛楁槸鐢卞湪緋葷粺鑼冨洿鍐呭敮涓鐨勯敭鍊肩敓鎴愮殑錛岃岄敭鍊煎彲浠ョ湅浣滃搴旂郴緇熷唴鐨勪竴鏉¤礬緇忋?/p>

2銆?璇誨啓鎿嶄綔

娑堟伅璇誨啓鎿嶄綔闈炲父綆鍗曪紝瀵瑰紑鍙戜漢鍛樻潵璇達紝姣忎釜娑堟伅閮界被浼煎涓嬬殑鏁版嵁緇撴瀯錛?/p>
struct msgbuf{
long mtype;
char mtext[1];
};

mtype鎴愬憳浠h〃娑堟伅綾誨瀷錛屼粠娑堟伅闃熷垪涓鍙栨秷鎭殑涓涓噸瑕佷緷鎹氨鏄秷鎭殑綾誨瀷錛沵text鏄秷鎭唴瀹癸紝褰撶劧闀垮害涓嶄竴瀹氫負1銆傚洜姝わ紝瀵逛簬鍙戦佹秷鎭潵璇達紝棣栧厛棰勭疆涓涓猰sgbuf緙撳啿鍖哄茍鍐欏叆娑堟伅綾誨瀷鍜屽唴瀹癸紝璋冪敤鐩稿簲鐨勫彂閫佸嚱鏁板嵆鍙紱瀵硅鍙栨秷鎭潵璇達紝棣栧厛鍒嗛厤榪欐牱涓涓猰sgbuf緙撳啿鍖猴紝鐒跺悗鎶婃秷鎭鍏ヨ緙撳啿鍖哄嵆鍙?/p>

3銆?鑾峰緱鎴栬緗秷鎭槦鍒楀睘鎬э細

娑堟伅闃熷垪鐨勪俊鎭熀鏈笂閮戒繚瀛樺湪娑堟伅闃熷垪澶翠腑錛屽洜姝わ紝鍙互鍒嗛厤涓涓被浼間簬娑堟伅闃熷垪澶寸殑緇撴瀯(struct msqid_ds錛岃 闄勫綍 2)錛屾潵榪斿洖娑堟伅闃熷垪鐨勫睘鎬э紱鍚屾牱鍙互璁劇疆璇ユ暟鎹粨鏋勩?






娑堟伅闃熷垪API

1銆佹枃浠跺悕鍒伴敭鍊?/strong>

#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok (char*pathname, char proj)錛?


瀹冭繑鍥炰笌璺緞pathname鐩稿搴旂殑涓涓敭鍊箋傝鍑芥暟涓嶇洿鎺ュ娑堟伅闃熷垪鎿嶄綔錛屼絾鍦ㄨ皟鐢╥pc(MSGGET,鈥?鎴杕sgget()鏉ヨ幏寰楁秷鎭槦鍒楁弿榪板瓧鍓嶏紝寰寰瑕佽皟鐢ㄨ鍑芥暟銆傚吀鍨嬬殑璋冪敤浠g爜鏄細

key=ftok(path_ptr, 'a');
    ipc_id=ipc(MSGGET, (int)key, flags,0,NULL,0);
    鈥?


2銆乴inux涓烘搷浣滅郴緇烿榪涚▼闂撮氫俊鐨勪笁縐嶆柟寮忥紙娑堟伅闃熷垪銆佷俊鍙風伅銆佸叡浜唴瀛樺尯錛夋彁渚涗簡涓涓粺涓鐨勭敤鎴風晫闈細
int ipc (unsigned int call, int first, int second, int third, void * ptr, long fifth);

絎竴涓弬鏁版寚鏄庡IPC瀵硅薄鐨勬搷浣滄柟寮忥紝瀵規秷鎭槦鍒楄岃█鍏辨湁鍥涚鎿嶄綔錛歁SGSND銆丮SGRCV銆丮SGGET浠ュ強MSGCTL錛屽垎鍒唬琛ㄥ悜娑堟伅闃熷垪鍙戦佹秷鎭佷粠娑堟伅闃熷垪璇誨彇娑堟伅銆佹墦寮鎴栧垱寤烘秷鎭槦鍒椼佹帶鍒舵秷鎭槦鍒楋紱first鍙傛暟浠h〃鍞竴鐨処PC瀵硅薄錛涗笅闈㈠皢浠嬬粛鍥涚鎿嶄綔銆?/p>

  • int ipc( MSGGET, intfirst, intsecond, intthird, void*ptr, longfifth);
    涓庤鎿嶄綔瀵瑰簲鐨勭郴緇烿璋冪敤涓猴細int msgget( (key_t)first錛宻econd)銆?
  • int ipc( MSGCTL, intfirst, intsecond, intthird, void*ptr, longfifth)
    涓庤鎿嶄綔瀵瑰簲鐨勭郴緇烿璋冪敤涓猴細int msgctl( first錛宻econd, (struct msqid_ds*) ptr)銆?
  • int ipc( MSGSND, intfirst, intsecond, intthird, void*ptr, longfifth);
    涓庤鎿嶄綔瀵瑰簲鐨勭郴緇烿璋冪敤涓猴細int msgsnd( first, (struct msgbuf*)ptr, second, third)銆?
  • int ipc( MSGRCV, intfirst, intsecond, intthird, void*ptr, longfifth);
    涓庤鎿嶄綔瀵瑰簲鐨勭郴緇烿璋冪敤涓猴細int msgrcv( first錛?struct msgbuf*)ptr, second, fifth,third)錛?

娉細鏈漢涓嶄富寮犻噰鐢ㄧ郴緇熻皟鐢╥pc()錛岃屾洿鍊懼悜浜庨噰鐢ㄧ郴緇烿鎴栬匬OSIX榪涚▼闂撮氫俊API銆傚師鍥犲涓嬶細

  • 铏界劧璇ョ郴緇熻皟鐢ㄦ彁渚涗簡緇熶竴鐨勭敤鎴風晫闈紝浣嗘鏄敱浜庤繖涓壒鎬э紝瀹冪殑鍙傛暟鍑犱箮涓嶈兘緇欏嚭鐗瑰畾鐨勫疄闄呮剰涔夛紙濡備互first銆乻econd鏉ュ懡鍚嶅弬鏁幫級錛屽湪涓瀹氱▼搴︿笂閫犳垚寮鍙戜笉渚褲?
  • 姝eipc鎵嬪唽鎵璇寸殑錛歩pc()鏄痩inux鎵鐗規湁鐨勶紝緙栧啓紼嬪簭鏃跺簲娉ㄦ剰紼嬪簭鐨勭Щ妞嶆ч棶棰橈紱
  • 璇ョ郴緇熻皟鐢ㄧ殑瀹炵幇涓嶈繃鏄妸緋葷粺V IPC鍑芥暟榪涜浜嗗皝瑁咃紝娌℃湁浠諱綍鏁堢巼涓婄殑浼樺娍錛?
  • 緋葷粺V鍦↖PC鏂歸潰鐨凙PI鏁伴噺涓嶅錛屽艦寮忎篃杈冪畝媧併?

3.緋葷粺V娑堟伅闃熷垪API
緋葷粺V娑堟伅闃熷垪API鍏辨湁鍥涗釜錛屼嬌鐢ㄦ椂闇瑕佸寘鎷嚑涓ご鏂囦歡錛?

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>


1錛塱nt msgget(key_t key, int msgflg)

鍙傛暟key鏄竴涓敭鍊鹼紝鐢眆tok鑾峰緱錛沵sgflg鍙傛暟鏄竴浜涙爣蹇椾綅銆傝璋冪敤榪斿洖涓庡仴鍊糼ey鐩稿搴旂殑娑堟伅闃熷垪鎻忚堪瀛椼?/p>

鍦ㄤ互涓嬩袱縐嶆儏鍐典笅錛岃璋冪敤灝嗗垱寤轟竴涓柊鐨勬秷鎭槦鍒楋細

  • 濡傛灉娌℃湁娑堟伅闃熷垪涓庡仴鍊糼ey鐩稿搴旓紝騫朵笖msgflg涓寘鍚簡IPC_CREAT鏍囧織浣嶏紱
  • key鍙傛暟涓篒PC_PRIVATE錛?

鍙傛暟msgflg鍙互涓轟互涓嬶細IPC_CREAT銆両PC_EXCL銆両PC_NOWAIT鎴栦笁鑰呯殑鎴栫粨鏋溿?/p>

璋冪敤榪斿洖錛?/b>鎴愬姛榪斿洖娑堟伅闃熷垪鎻忚堪瀛楋紝鍚﹀垯榪斿洖-1銆?

娉細鍙傛暟key璁劇疆鎴愬父鏁癐PC_PRIVATE騫朵笉鎰忓懗鐫鍏朵粬榪涚▼涓嶈兘璁塊棶璇ユ秷鎭槦鍒楋紝鍙剰鍛崇潃鍗沖皢鍒涘緩鏂扮殑娑堟伅闃熷垪銆?/p>

2錛塱nt msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg);
璇ョ郴緇熻皟鐢ㄤ粠msgid浠h〃鐨勬秷鎭槦鍒椾腑璇誨彇涓涓秷鎭紝騫舵妸娑堟伅瀛樺偍鍦╩sgp鎸囧悜鐨刴sgbuf緇撴瀯涓?

msqid涓烘秷鎭槦鍒楁弿榪板瓧錛涙秷鎭繑鍥炲悗瀛樺偍鍦╩sgp鎸囧悜鐨勫湴鍧錛宮sgsz鎸囧畾msgbuf鐨刴text鎴愬憳鐨勯暱搴︼紙鍗蟲秷鎭唴瀹圭殑闀垮害錛夛紝msgtyp涓鴻姹傝鍙栫殑娑堟伅綾誨瀷錛涜娑堟伅鏍囧織msgflg鍙互涓轟互涓嬪嚑涓父鍊肩殑鎴栵細

  • IPC_NOWAIT 濡傛灉娌℃湁婊¤凍鏉′歡鐨勬秷鎭紝璋冪敤绔嬪嵆榪斿洖錛屾鏃訛紝errno=ENOMSG
  • IPC_EXCEPT 涓巑sgtyp>0閰嶅悎浣跨敤錛岃繑鍥為槦鍒椾腑絎竴涓被鍨嬩笉涓簃sgtyp鐨勬秷鎭?
  • IPC_NOERROR 濡傛灉闃熷垪涓弧瓚蟲潯浠剁殑娑堟伅鍐呭澶т簬鎵璇鋒眰鐨刴sgsz瀛楄妭錛屽垯鎶婅娑堟伅鎴柇錛屾埅鏂儴鍒嗗皢涓㈠け銆?

msgrcv鎵嬪唽涓緇嗙粰鍑轟簡娑堟伅綾誨瀷鍙栦笉鍚屽兼椂(>0; <0; =0)錛岃皟鐢ㄥ皢榪斿洖娑堟伅闃熷垪涓殑鍝釜娑堟伅銆?/p>

msgrcv()瑙i櫎闃誨鐨勬潯浠舵湁涓変釜錛?/p>

  1. 娑堟伅闃熷垪涓湁浜嗘弧瓚蟲潯浠剁殑娑堟伅錛?
  2. msqid浠h〃鐨勬秷鎭槦鍒楄鍒犻櫎錛?
  3. 璋冪敤msgrcv錛堬級鐨勮繘紼嬭淇″彿涓柇錛?

璋冪敤榪斿洖錛?/b>鎴愬姛榪斿洖璇誨嚭娑堟伅鐨勫疄闄呭瓧鑺傛暟錛屽惁鍒欒繑鍥?1銆?

3錛塱nt msgsnd(int msqid, struct msgbuf *msgp, int msgsz, int msgflg);
鍚憁sgid浠h〃鐨勬秷鎭槦鍒楀彂閫佷竴涓秷鎭紝鍗沖皢鍙戦佺殑娑堟伅瀛樺偍鍦╩sgp鎸囧悜鐨刴sgbuf緇撴瀯涓紝娑堟伅鐨勫ぇ灝忕敱msgze鎸囧畾銆?

瀵瑰彂閫佹秷鎭潵璇達紝鏈夋剰涔夌殑msgflg鏍囧織涓篒PC_NOWAIT錛屾寚鏄庡湪娑堟伅闃熷垪娌℃湁瓚沖絀洪棿瀹圭撼瑕佸彂閫佺殑娑堟伅鏃訛紝msgsnd鏄惁絳夊緟銆傞犳垚msgsnd()絳夊緟鐨勬潯浠舵湁涓ょ錛?/p>

  • 褰撳墠娑堟伅鐨勫ぇ灝忎笌褰撳墠娑堟伅闃熷垪涓殑瀛楄妭鏁頒箣鍜岃秴榪囦簡娑堟伅闃熷垪鐨勬誨閲忥紱
  • 褰撳墠娑堟伅闃熷垪鐨勬秷鎭暟錛堝崟浣?涓?錛変笉灝忎簬娑堟伅闃熷垪鐨勬誨閲忥紙鍗曚綅"瀛楄妭鏁?錛夛紝姝ゆ椂錛岃櫧鐒舵秷鎭槦鍒椾腑鐨勬秷鎭暟鐩緢澶氾紝浣嗗熀鏈笂閮藉彧鏈変竴涓瓧鑺傘?

msgsnd()瑙i櫎闃誨鐨勬潯浠舵湁涓変釜錛?
  1. 涓嶆弧瓚充笂榪頒袱涓潯浠訛紝鍗蟲秷鎭槦鍒椾腑鏈夊綰寵娑堟伅鐨勭┖闂達紱
  2. msqid浠h〃鐨勬秷鎭槦鍒楄鍒犻櫎錛?
  3. 璋冪敤msgsnd錛堬級鐨勮繘紼嬭淇″彿涓柇錛?

璋冪敤榪斿洖錛?/b>鎴愬姛榪斿洖0錛屽惁鍒欒繑鍥?1銆?

4錛塱nt msgctl(int msqid, int cmd, struct msqid_ds *buf);
璇ョ郴緇熻皟鐢ㄥ鐢眒sqid鏍囪瘑鐨勬秷鎭槦鍒楁墽琛宑md鎿嶄綔錛屽叡鏈変笁縐峜md鎿嶄綔錛欼PC_STAT銆両PC_SET 銆両PC_RMID銆?

  1. IPC_STAT錛氳鍛戒護鐢ㄦ潵鑾峰彇娑堟伅闃熷垪淇℃伅錛岃繑鍥炵殑淇℃伅瀛樿串鍦╞uf鎸囧悜鐨刴sqid緇撴瀯涓紱
  2. IPC_SET錛氳鍛戒護鐢ㄦ潵璁劇疆娑堟伅闃熷垪鐨勫睘鎬э紝瑕佽緗殑灞炴у瓨鍌ㄥ湪buf鎸囧悜鐨刴sqid緇撴瀯涓紱鍙緗睘鎬у寘鎷細msg_perm.uid銆乵sg_perm.gid銆乵sg_perm.mode浠ュ強msg_qbytes錛屽悓鏃訛紝涔熷獎鍝峬sg_ctime鎴愬憳銆?
  3. IPC_RMID錛氬垹闄sqid鏍囪瘑鐨勬秷鎭槦鍒楋紱

璋冪敤榪斿洖錛?/b>鎴愬姛榪斿洖0錛屽惁鍒欒繑鍥?1銆?





鍥為〉棣?/font>


涓夈佹秷鎭槦鍒楃殑闄愬埗

姣忎釜娑堟伅闃熷垪鐨勫閲忥紙鎵鑳藉綰崇殑瀛楄妭鏁幫級閮芥湁闄愬埗錛岃鍊煎洜緋葷粺涓嶅悓鑰屼笉鍚屻傚湪鍚庨潰鐨勫簲鐢ㄥ疄渚嬩腑錛岃緭鍑轟簡redhat 8.0鐨勯檺鍒訛紝緇撴灉鍙傝 闄勫綍 3銆?

鍙︿竴涓檺鍒舵槸姣忎釜娑堟伅闃熷垪鎵鑳藉綰崇殑鏈澶ф秷鎭暟錛氬湪redhad 8.0涓紝璇ラ檺鍒舵槸鍙楁秷鎭槦鍒楀閲忓埗綰︾殑錛氭秷鎭釜鏁拌灝忎簬娑堟伅闃熷垪鐨勫閲忥紙瀛楄妭鏁幫級銆?/p>

娉細涓婅堪涓や釜闄愬埗鏄拡瀵規瘡涓秷鎭槦鍒楄岃█鐨勶紝緋葷粺瀵規秷鎭槦鍒楃殑闄愬埗榪樻湁緋葷粺鑼冨洿鍐呯殑鏈澶ф秷鎭槦鍒椾釜鏁幫紝浠ュ強鏁翠釜緋葷粺鑼冨洿鍐呯殑鏈澶ф秷鎭暟銆備竴鑸潵璇達紝瀹為檯寮鍙戣繃紼嬩腑涓嶄細瓚呰繃榪欎釜闄愬埗銆?/p>



鍥為〉棣?/font>


鍥涖佹秷鎭槦鍒楀簲鐢ㄥ疄渚?/span>

娑堟伅闃熷垪搴旂敤鐩稿杈冪畝鍗曪紝涓嬮潰瀹炰緥鍩烘湰涓婅鐩栦簡瀵規秷鎭槦鍒楃殑鎵鏈夋搷浣滐紝鍚屾椂錛岀▼搴忚緭鍑虹粨鏋滄湁鍔╀簬鍔犳繁瀵瑰墠闈㈡墍璁茬殑鏌愪簺瑙勫垯鍙婃秷鎭槦鍒楅檺鍒剁殑鐞嗚В銆?/p>
#include <sys/types.h>
#include <sys/msg.h>
#include <unistd.h>
void msg_stat(int,struct msqid_ds );
main()
{
int gflags,sflags,rflags;
key_t key;
int msgid;
int reval;
struct msgsbuf{
        int mtype;
        char mtext[1];
    }msg_sbuf;
struct msgmbuf
    {
    int mtype;
    char mtext[10];
    }msg_rbuf;
struct msqid_ds msg_ginfo,msg_sinfo;
char* msgpath="/unix/msgqueue";
key=ftok(msgpath,'a');
gflags=IPC_CREAT|IPC_EXCL;
msgid=msgget(key,gflags|00666);
if(msgid==-1)
{
    printf("msg create error\n");
    return;
}
//鍒涘緩涓涓秷鎭槦鍒楀悗錛岃緭鍑烘秷鎭槦鍒楃己鐪佸睘鎬?
msg_stat(msgid,msg_ginfo);
sflags=IPC_NOWAIT;
msg_sbuf.mtype=10;
msg_sbuf.mtext[0]='a';
reval=msgsnd(msgid,&msg_sbuf,sizeof(msg_sbuf.mtext),sflags);
if(reval==-1)
{
    printf("message send error\n");
}
//鍙戦佷竴涓秷鎭悗錛岃緭鍑烘秷鎭槦鍒楀睘鎬?
msg_stat(msgid,msg_ginfo);
rflags=IPC_NOWAIT|MSG_NOERROR;
reval=msgrcv(msgid,&msg_rbuf,4,10,rflags);
if(reval==-1)
    printf("read msg error\n");
else
    printf("read from msg queue %d bytes\n",reval);
//浠庢秷鎭槦鍒椾腑璇誨嚭娑堟伅鍚庯紝杈撳嚭娑堟伅闃熷垪灞炴?
msg_stat(msgid,msg_ginfo);
msg_sinfo.msg_perm.uid=8;//just a try
msg_sinfo.msg_perm.gid=8;//
msg_sinfo.msg_qbytes=16388;
//姝ゅ楠岃瘉瓚呯駭鐢ㄦ埛鍙互鏇存敼娑堟伅闃熷垪鐨勭己鐪乵sg_qbytes
//娉ㄦ剰榪欓噷璁劇疆鐨勫煎ぇ浜庣己鐪佸?
reval=msgctl(msgid,IPC_SET,&msg_sinfo);
if(reval==-1)
{
    printf("msg set info error\n");
    return;
}
msg_stat(msgid,msg_ginfo);
//楠岃瘉璁劇疆娑堟伅闃熷垪灞炴?
reval=msgctl(msgid,IPC_RMID,NULL);//鍒犻櫎娑堟伅闃熷垪
if(reval==-1)
{
    printf("unlink msg queue error\n");
    return;
}
}
void msg_stat(int msgid,struct msqid_ds msg_info)
{
int reval;
sleep(1);//鍙槸涓轟簡鍚庨潰杈撳嚭鏃墮棿鐨勬柟渚?
reval=msgctl(msgid,IPC_STAT,&msg_info);
if(reval==-1)
{
    printf("get msg info error\n");
    return;
}
printf("\n");
printf("current number of bytes on queue is %d\n",msg_info.msg_cbytes);
printf("number of messages in queue is %d\n",msg_info.msg_qnum);
printf("max number of bytes on queue is %d\n",msg_info.msg_qbytes);
//姣忎釜娑堟伅闃熷垪鐨勫閲忥紙瀛楄妭鏁幫級閮芥湁闄愬埗MSGMNB錛屽肩殑澶у皬鍥犵郴緇熻屽紓銆傚湪鍒涘緩鏂扮殑娑堟伅闃熷垪鏃訛紝//msg_qbytes鐨勭己鐪佸煎氨鏄疢SGMNB
printf("pid of last msgsnd is %d\n",msg_info.msg_lspid);
printf("pid of last msgrcv is %d\n",msg_info.msg_lrpid);
printf("last msgsnd time is %s", ctime(&(msg_info.msg_stime)));
printf("last msgrcv time is %s", ctime(&(msg_info.msg_rtime)));
printf("last change time is %s", ctime(&(msg_info.msg_ctime)));
printf("msg uid is %d\n",msg_info.msg_perm.uid);
printf("msg gid is %d\n",msg_info.msg_perm.gid);
}

紼嬪簭杈撳嚭緇撴灉瑙?闄勫綍 3銆?




鍥為〉棣?/font>


灝忕粨錛?/span>

娑堟伅闃熷垪涓庣閬撲互鍙婃湁鍚嶇閬撶浉姣旓紝鍏鋒湁鏇村ぇ鐨勭伒媧繪э紝棣栧厛錛屽畠鎻愪緵鏈夋牸寮忓瓧鑺傛祦錛屾湁鍒╀簬鍑忓皯寮鍙戜漢鍛樼殑宸ヤ綔閲忥紱鍏舵錛屾秷鎭叿鏈夌被鍨嬶紝鍦ㄥ疄闄呭簲鐢ㄤ腑錛屽彲浣滀負浼樺厛綰т嬌鐢ㄣ傝繖涓ょ偣鏄閬撲互鍙婃湁鍚嶇閬撴墍涓嶈兘姣旂殑銆傚悓鏍鳳紝娑堟伅闃熷垪鍙互鍦ㄥ嚑涓繘紼嬮棿澶嶇敤錛岃屼笉綆¤繖鍑犱釜榪涚▼鏄惁鍏鋒湁浜茬紭鍏崇郴錛岃繖涓鐐逛笌鏈夊悕綆¢亾寰堢浉浼鹼紱浣嗘秷鎭槦鍒楁槸闅忓唴鏍告寔緇殑錛屼笌鏈夊悕綆¢亾錛堥殢榪涚▼鎸佺畫錛夌浉姣旓紝鐢熷懡鍔涙洿寮猴紝搴旂敤絀洪棿鏇村ぇ銆?/p>

闄勫綍 1錛?鍦ㄥ弬鑰冩枃鐚甗1]涓紝緇欏嚭浜咺PC闅忚繘紼嬫寔緇侀殢鍐呮牳鎸佺畫浠ュ強闅忔枃浠剁郴緇熸寔緇殑瀹氫箟錛?

  1. 闅忚繘紼嬫寔緇細IPC涓鐩村瓨鍦ㄥ埌鎵撳紑IPC瀵硅薄鐨勬渶鍚庝竴涓繘紼嬪叧闂瀵硅薄涓烘銆傚綆¢亾鍜屾湁鍚嶇閬擄紱
  2. 闅忓唴鏍告寔緇細IPC涓鐩存寔緇埌鍐呮牳閲嶆柊鑷婦鎴栬呮樉紺哄垹闄よ瀵硅薄涓烘銆傚娑堟伅闃熷垪銆佷俊鍙風伅浠ュ強鍏變韓鍐呭瓨絳夛紱
  3. 闅忔枃浠剁郴緇熸寔緇細IPC涓鐩存寔緇埌鏄劇ず鍒犻櫎璇ュ璞′負姝€?

闄勫綍 2錛?
緇撴瀯msg_queue鐢ㄦ潵鎻忚堪娑堟伅闃熷垪澶達紝瀛樺湪浜庣郴緇熺┖闂達細

struct msg_queue {
    struct kern_ipc_perm q_perm;
    time_t q_stime;         /* last msgsnd time */
    time_t q_rtime;         /* last msgrcv time */
    time_t q_ctime;         /* last change time */
    unsigned long q_cbytes;     /* current number of bytes on queue */
    unsigned long q_qnum;       /* number of messages in queue */
    unsigned long q_qbytes;     /* max number of bytes on queue */
    pid_t q_lspid;          /* pid of last msgsnd */
    pid_t q_lrpid;          /* last receive pid */
    struct list_head q_messages;
    struct list_head q_receivers;
    struct list_head q_senders;
};


緇撴瀯msqid_ds鐢ㄦ潵璁劇疆鎴栬繑鍥炴秷鎭槦鍒楃殑淇℃伅錛屽瓨鍦ㄤ簬鐢ㄦ埛絀洪棿錛?/p>
struct msqid_ds {
    struct ipc_perm msg_perm;
    struct msg *msg_first;      /* first message on queue,unused  */
    struct msg *msg_last;       /* last message in queue,unused */
    __kernel_time_t msg_stime;  /* last msgsnd time */
    __kernel_time_t msg_rtime;  /* last msgrcv time */
    __kernel_time_t msg_ctime;  /* last change time */
    unsigned long  msg_lcbytes; /* Reuse junk fields for 32 bit */
    unsigned long  msg_lqbytes; /* ditto */
    unsigned short msg_cbytes;  /* current number of bytes on queue */
    unsigned short msg_qnum;    /* number of messages in queue */
    unsigned short msg_qbytes;  /* max number of bytes on queue */
    __kernel_ipc_pid_t msg_lspid;   /* pid of last msgsnd */
    __kernel_ipc_pid_t msg_lrpid;   /* last receive pid */
};

//鍙互鐪嬪嚭涓婅堪涓や釜緇撴瀯寰堢浉浼箋?

闄勫綍 3錛?娑堟伅闃熷垪瀹炰緥杈撳嚭緇撴灉錛?

current number of bytes on queue is 0
number of messages in queue is 0
max number of bytes on queue is 16384
pid of last msgsnd is 0
pid of last msgrcv is 0
last msgsnd time is Thu Jan  1 08:00:00 1970
last msgrcv time is Thu Jan  1 08:00:00 1970
last change time is Sun Dec 29 18:28:20 2002
msg uid is 0
msg gid is 0
//涓婇潰鍒氬垰鍒涘緩涓涓柊娑堟伅闃熷垪鏃剁殑杈撳嚭
current number of bytes on queue is 1
number of messages in queue is 1
max number of bytes on queue is 16384
pid of last msgsnd is 2510
pid of last msgrcv is 0
last msgsnd time is Sun Dec 29 18:28:21 2002
last msgrcv time is Thu Jan  1 08:00:00 1970
last change time is Sun Dec 29 18:28:20 2002
msg uid is 0
msg gid is 0
read from msg queue 1 bytes
//瀹為檯璇誨嚭鐨勫瓧鑺傛暟
current number of bytes on queue is 0
number of messages in queue is 0
max number of bytes on queue is 16384   //姣忎釜娑堟伅闃熷垪鏈澶у閲忥紙瀛楄妭鏁幫級
pid of last msgsnd is 2510
pid of last msgrcv is 2510
last msgsnd time is Sun Dec 29 18:28:21 2002
last msgrcv time is Sun Dec 29 18:28:22 2002
last change time is Sun Dec 29 18:28:20 2002
msg uid is 0
msg gid is 0
current number of bytes on queue is 0
number of messages in queue is 0
max number of bytes on queue is 16388   //鍙湅鍑鴻秴綰х敤鎴峰彲淇敼娑堟伅闃熷垪鏈澶у閲?
pid of last msgsnd is 2510
pid of last msgrcv is 2510  //瀵規搷浣滄秷鎭槦鍒楄繘紼嬬殑璺熻釜
last msgsnd time is Sun Dec 29 18:28:21 2002
last msgrcv time is Sun Dec 29 18:28:22 2002
last change time is Sun Dec 29 18:28:23 2002    //msgctl()璋冪敤瀵筸sg_ctime鏈夊獎鍝?
msg uid is 8
msg gid is 8



鍙傝冭祫鏂?

  • UNIX緗戠粶緙栫▼絎簩鍗鳳細榪涚▼闂撮氫俊錛屼綔鑰咃細W.Richard Stevens錛岃瘧鑰咃細鏉ㄧ戶寮狅紝娓呭崕澶у鍑虹増紺俱傚POSIX浠ュ強緋葷粺V娑堟伅闃熷垪閮芥湁闃愯堪錛屽Linux鐜涓嬬殑紼嬪簭寮鍙戞湁鏋佸ぇ鐨勫惎鍙戞剰涔夈?br />
  • linux鍐呮牳婧愪唬鐮佹儏鏅垎鏋愶紙涓婏級錛屾瘺寰鋒搷銆佽儭甯屾槑钁楋紝嫻欐睙澶у鍑虹増紺撅紝緇欏嚭浜嗙郴緇烿娑堟伅闃熷垪鐩稿叧鐨勬簮浠g爜鍒嗘瀽銆?br />
  • http://www.fanqiang.com/a4/b2/20010508/113315.html錛屼富瑕侀槓榪發inux涓嬪鏂囦歡鐨勬搷浣滐紝璇︾粏浠嬬粛浜嗗鏂囦歡鐨勫瓨鍙栨潈闄愪綅錛屽IPC瀵硅薄鐨勫瓨鍙栨潈闄愬悓鏍峰叿鏈夊緢濂界殑鍊熼壌鎰忎箟銆?

  • msgget銆乵sgsnd銆乵sgrcv銆乵sgctl鎵嬪唽


鍏充簬浣滆?/span>

閮戝濺鍏達紝鐢鳳紝鐜版敾璇誨浗闃茬澶ц綆楁満瀛﹂櫌緗戠粶鏂瑰悜鍗氬+瀛︿綅銆傛偍鍙互閫氳繃鐢靛瓙閭歡 mlinux@163.com鍜屼粬鑱旂郴銆?



true 2007-03-27 16:26 鍙戣〃璇勮
]]>ldconfig鍑犱釜闇瑕佹敞鎰忕殑鍦版柟 zhuanhttp://m.shnenglu.com/true/archive/2007/03/27/20667.htmltruetrueTue, 27 Mar 2007 00:53:00 GMThttp://m.shnenglu.com/true/archive/2007/03/27/20667.htmlhttp://m.shnenglu.com/true/comments/20667.htmlhttp://m.shnenglu.com/true/archive/2007/03/27/20667.html#Feedback4http://m.shnenglu.com/true/comments/commentRss/20667.htmlhttp://m.shnenglu.com/true/services/trackbacks/20667.htmlldconfig鍑犱釜闇瑕佹敞鎰忕殑鍦版柟

1. 寰/lib鍜?usr/lib閲岄潰鍔犱笢瑗匡紝鏄笉鐢ㄤ慨鏀?etc/ld.so.conf鐨勶紝浣嗘槸瀹屼簡涔嬪悗瑕佽皟涓涓媗dconfig錛屼笉鐒惰繖涓猯ibrary浼氭壘涓嶅埌
2. 鎯沖線涓婇潰涓や釜鐩綍浠ュ鍔犱笢瑗跨殑鏃跺欙紝涓瀹氳淇敼/etc/ld.so.conf錛岀劧鍚庡啀璋冪敤ldconfig錛屼笉鐒朵篃浼氭壘涓嶅埌
姣斿瀹夎浜嗕竴涓猰ysql鍒?usr/local/mysql錛宮ysql鏈変竴澶у爢library鍦?usr/local/mysql/lib涓嬮潰錛岃繖鏃跺氨闇瑕佸湪/etc/ld.so.conf涓嬮潰鍔犱竴琛?usr/local/mysql/lib錛屼繚瀛樿繃鍚巐dconfig涓涓嬶紝鏂扮殑library鎵嶈兘鍦ㄧ▼搴忚繍琛屾椂琚壘鍒般?/div>
3. 濡傛灉鎯沖湪榪欎袱涓洰褰曚互澶栨斁lib錛屼絾鏄張涓嶆兂鍦?etc/ld.so.conf涓姞涓滆タ錛堟垨鑰呮槸娌℃湁鏉冮檺鍔犱笢瑗匡級銆傞偅涔熷彲浠ワ紝灝辨槸export涓涓叏灞鍙橀噺LD_LIBRARY_PATH錛岀劧鍚庤繍琛岀▼搴忕殑鏃跺欏氨浼氬幓榪欎釜鐩綍涓壘library銆備竴鑸潵璁茶繖鍙槸涓縐嶄復鏃剁殑瑙e喅鏂規錛屽湪娌℃湁鏉冮檺鎴栦復鏃墮渶瑕佺殑鏃跺欎嬌鐢ㄣ?/div>
4. ldconfig鍋氱殑榪欎簺涓滆タ閮戒笌榪愯紼嬪簭鏃舵湁鍏籌紝璺熺紪璇戞椂涓鐐瑰叧緋婚兘娌℃湁銆傜紪璇戠殑鏃跺欒繕鏄鍔?L灝卞緱鍔狅紝涓嶈娣鋒穯浜嗐?/div>
5. 鎬諱箣錛屽氨鏄笉綆″仛浜嗕粈涔堝叧浜巐ibrary鐨勫彉鍔ㄥ悗錛屾渶濂介兘ldconfig涓涓嬶紝涓嶇劧浼氬嚭鐜頒竴浜涙剰鎯充笉鍒扮殑緇撴灉銆備笉浼氳姳澶鐨勬椂闂達紝浣嗘槸浼氱渷寰堝鐨勪簨銆?/div>


true 2007-03-27 08:53 鍙戣〃璇勮
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              中文高清一区| 欧美日韩国产美女| 蜜臀久久久99精品久久久久久| 在线一区观看| 亚洲在线网站| 欧美在线|欧美| 久久久久一本一区二区青青蜜月| 久久黄金**| 欧美日韩一区二区在线观看| 日韩一级欧洲| 一区二区三区|亚洲午夜| 99精品免费视频| 亚洲欧美日韩在线| 久久国产精品黑丝| 欧美77777| 夜夜嗨av一区二区三区免费区| 亚洲视频 欧洲视频| 欧美一区日韩一区| 欧美成人免费视频| 国产精品久久久久影院亚瑟 | 国产精品久久久久77777| 国产精品人成在线观看免费| 亚洲永久免费av| 欧美一区二区三区精品电影| 老司机精品福利视频| 亚洲日韩成人| 亚洲一区二区三区午夜| 久久视频在线免费观看| 欧美视频三区在线播放| 国产最新精品精品你懂的| 亚洲人成网站999久久久综合| 亚洲一区精品在线| 免费成人性网站| 亚洲午夜小视频| 欧美好吊妞视频| 国内外成人免费激情在线视频网站| 91久久国产精品91久久性色| 午夜在线播放视频欧美| 亚洲韩国精品一区| 久久久一区二区三区| 国产精品日韩精品欧美精品| 最新日韩在线视频| 久久五月激情| 亚洲欧美在线aaa| 国产精品xxx在线观看www| 亚洲精品国产精品国自产观看| 久久福利电影| 中文精品视频| 欧美一级在线播放| 亚洲精品孕妇| 麻豆国产va免费精品高清在线| 亚洲六月丁香色婷婷综合久久| 久久亚洲不卡| 好看的日韩视频| 久久精视频免费在线久久完整在线看| 日韩午夜av电影| 欧美日韩一区二区三区| 亚洲国产欧美日韩精品| 老牛嫩草一区二区三区日本 | 欧美视频福利| 一区二区国产在线观看| 亚洲欧洲综合| 欧美日本中文| 亚洲一区成人| 亚洲少妇中出一区| 国产精品私房写真福利视频 | 亚洲国产mv| 美国十次了思思久久精品导航| 久久精品一区四区| 亚洲大片精品永久免费| 欧美成ee人免费视频| 老鸭窝毛片一区二区三区| 影音先锋国产精品| 亚洲国产精品美女| 欧美午夜片在线观看| 亚洲一区三区视频在线观看| 中国成人黄色视屏| 国产欧美日韩一区| 免费人成精品欧美精品| 欧美激情久久久久| 亚洲欧美bt| 久久久久国内| 一区二区黄色| 久久久国际精品| 9l国产精品久久久久麻豆| 亚洲永久免费观看| 在线日韩中文| 亚洲性人人天天夜夜摸| 精东粉嫩av免费一区二区三区| 欧美激情第1页| 国产精品每日更新| 母乳一区在线观看| 国产精品高潮呻吟久久av黑人| 久久成人18免费网站| 蜜桃久久av| 欧美在线免费播放| 欧美喷潮久久久xxxxx| 久久精品视频播放| 欧美日韩国产在线观看| 久久亚洲精品一区| 欧美午夜片欧美片在线观看| 美日韩在线观看| 国产精品日韩欧美大师| 亚洲国产毛片完整版 | 亚洲无限乱码一二三四麻| 国产日韩一区在线| 久久综合色综合88| 国产精品chinese| 久久久99国产精品免费| 欧美女主播在线| 男女激情视频一区| 国产欧美丝祙| av成人天堂| 亚洲乱码视频| 久久青青草原一区二区| 性欧美videos另类喷潮| 欧美日本一区| 欧美二区视频| 亚洲福利电影| 久久国产欧美精品| 香蕉久久a毛片| 欧美午夜精品久久久久久人妖| 欧美激情精品久久久久| 激情欧美一区二区三区| 欧美一区二区观看视频| 午夜亚洲福利| 国产精品嫩草99av在线| 一区二区高清在线观看| 一区二区三区产品免费精品久久75 | 亚洲天堂男人| 欧美久久婷婷综合色| 欧美激情1区2区| 亚洲国产日本| 欧美成人午夜| 亚洲欧洲一区二区三区久久| 最新中文字幕亚洲| 免费观看成人网| 亚洲国产欧美日韩精品| 亚洲美女免费精品视频在线观看| 欧美99在线视频观看| 欧美激情五月| 亚洲精品一区二区三区福利| 欧美电影在线观看完整版| 亚洲福利视频三区| 日韩一区二区电影网| 欧美日韩三区四区| 亚洲综合久久久久| 久久久久久久久久久久久久一区| 国产亚洲欧美日韩日本| 亚洲福利视频二区| 欧美高清视频在线播放| 日韩视频免费在线观看| 亚洲男人影院| 国产一区 二区 三区一级| 久久精品在这里| 亚洲精品久久嫩草网站秘色| 亚洲免费中文| 一区在线视频观看| 欧美不卡在线视频| 在线亚洲伦理| 裸体一区二区| 一本综合精品| 国产喷白浆一区二区三区| 久久九九电影| 亚洲美女在线国产| 久久久99国产精品免费| 亚洲日本视频| 国产情人节一区| 欧美超级免费视 在线| 一区二区三区欧美| 国产日韩欧美a| 亚洲理伦电影| 亚洲黄色免费| 亚洲人成亚洲人成在线观看| 久久电影一区| 亚洲成色www8888| 一区二区三区视频在线 | 亚洲自拍偷拍一区| 国产日韩精品一区| 欧美成人精品高清在线播放| 亚洲视频一区二区免费在线观看| 久久久久国产精品麻豆ai换脸| 亚洲国产精品999| 国产精品红桃| 欧美成人黄色小视频| 亚洲中无吗在线| 亚洲日本中文字幕区| 麻豆精品精华液| 欧美一区二区三区视频在线 | 欧美有码在线视频| 亚洲三级影片| 欧美99久久| 欧美一区影院| 一区二区三区精密机械公司| 激情亚洲成人| 国产欧美一区二区精品婷婷| 欧美日韩亚洲一区二| 久久亚洲美女| 久久精品国产久精国产思思 | 麻豆久久久9性大片|