Linuxϵĵ÷ÊÔ¹¤¾ß
תÔØʱÇë×¢Ã÷³ö´¦ºÍ×÷ÕßÁªÏµ·½Ê½
ÎÄÕ³ö´¦£ºhttp://www.limodev.cn/blog
×÷ÕßÁªÏµ·½Ê½£ºÀîÏȾ² <xianjimli at hotmail dot com>
Ëæ×ÅXPµÄÁ÷ÐУ¬ÈËÃÇÔ½À´Ô½×¢ÖØÈí¼þµÄÇ°ÆÚÉè¼Æ¡¢ºóÆÚµÄʵÏÖ£¬ÒÔ¼°¹á´©ÓÚÆäÖеIJâÊÔ¹¤×÷£¬¾¹ýÕâ¸ö¹ý³Ì³öÀ´µÄ×ÔÈ»ÊǸßÖÊÁ¿µÄÈí¼þ¡£ÉõÖÁÓÐÈËÉù³ÆXP»áÌÔ̵÷ÊÔÆ÷£¡Õ⵱ȻÊÇÓÐÒ»¶¨µÀÀíµÄ£¬È»¶ø¾ÍÄ¿Ç°µÄÏÖʵÀ´¿´£¬Õ⻹ÊÇÒ»ÖÖÀíÏë¡£ÔÚÈÕ³£¹¤×÷ÖУ¬µ÷ÊÔ¹¤¾ß»¹ÊDZز»¿ÉÉٵġ£ÔÚLinuxÏ£¬µ÷ÊÔ¹¤¾ß²¢·ÇÖ»ÓÐgdb£¬»¹ÓкܶàÆäËüµ÷ÊÔ¹¤¾ß£¬ËüÃǶ¼¸÷ÓÐËù³¤£¬²àÖØ·½ÃæÒ²ÓÐËù²»Í¬¡£±¾ÎĽéÉܼ¸ÖÖ±ÊÕß³£Óõĵ÷ÊÔ¹¤¾ß£º
1. mtrace
ÔÚlinuxÏ¿ª·¢Ó¦ÓóÌÐò£¬ÓÃC/C++ÓïÑԵľӶࡣÄÚ´æй¶ºÍÄÚ´æÔ½½çµÈÄÚ´æ´íÎó£¬ÎÞÒÉÊÇÆäÖÐ×îÍ·ÌÛµÄÎÊÌâÖ®Ò»¡£glibcΪ½â¾öÄÚ´æ´íÎóÌṩÁËÁ½ÖÖ·½°¸£º
Ò»ÖÖÊÇhookÄÚ´æ¹ÜÀíº¯Êý¡£hookÄÚ´æ¹ÜÀíº¯Êýºó£¬Äã¿ÉÒÔͨ¹ý¼ÇÏÂÄÚ´æ·ÖÅäµÄÀúÊ·¼Ç¼£¬ÔÚ³ÌÐòÖÕֹʱ²é¿´ÊÇ·ñÓÐÄÚ´æй¶£¬ÕâÑù¾Í¿ÉÒÔÕÒ³öÄÚ´æй¶µÄµØ·½ÁË¡£ÄãÒ²¿ÉÒÔͨ¹ýÔÚËù·ÖÅäÄÚ´æµÄÊ×βдÈëÌØÊâµÄ±êÖ¾£¬ÔÚÊÍ·ÅÄÚ´æʱ¼ì²é¸Ã±êÖ¾ÊÇ·ñ±»ÆÆ»µÁË£¬ÕâÑù¾Í¿ÉÒÔ´ïµ½¼ì²éÄÚ´æÔ½½çÎÊÌâµÄÄ¿µÄ¡£
ÁíÍâÒ»ÖÖ·½·¨¸ü¼òµ¥£¬glibcÒѾΪµÚÒ»ÖÖ·½°¸ÌṩÁËĬÈϵÄʵÏÖ£¬ÄãÒª×öµÄÖ»ÊÇÔÚÌض¨µÄλÖõ÷ÓÃmtrace/muntraceÁ½¸öº¯Êý£¬ËüÃǵĺ¯ÊýÔÐÍÈçÏ£º
#include
void mtrace(void);
void muntrace(void);
Äã¿ÉÄÜ»áÎÊ£¬ÔÚÄÄÀïµ÷ÕâÁ½ÖÖº¯Êý×îºÃ£¿ÕâûÓй̶¨µÄ´ð°¸£¬ÒªÊÓ¾ßÌåÇé¿ö¶ø¶¨¡£¶ÔÓÚС³ÌÐòÀ´Ëµ£¬ÔÚ½øÈëmainʱµ÷ÓÃmtrace£¬ÔÚÍ˳ömainº¯Êýʱµ÷ÓÃmuntrace¡£¶ÔÓÚ´óÐÍÈí¼þ£¬ÕâÑù×ö¿ÉÄÜ»á¼Ç¼¹ý¶àµÄÐÅÏ¢£¬·ÖÎöÕâЩ¼Ç¼»á±È½ÏÂý£¬Õâʱ¿ÉÒÔÔÚÄãËù»³ÒÉ´úÂëµÄÁ½¶Ëµ÷Óá£
ÁíÍ⣬»¹ÐèÒªÉèÖÃÒ»¸ö»·¾³±äÁ¿MALLOC_TRACE£¬ËüÊÇÒ»¸öÎļþÃû£¬Òª±£Ö¤µ±Ç°Óû§ÓÐȨÏÞ´´½¨ºÍдÈë¸ÃÎļþ¡£glibcµÄÄÚ´æ¹ÜÀíÆ÷»á°ÑÄÚ´æ·ÖÅäµÄÀúÊ·ÐÅϢдÈëµ½MALLOC_TRACEÖ¸¶¨µÄÎļþÖС£
³ÌÐòÔËÐÐÍê±Ïºó£¬Ê¹ÓÃmtrace¹¤¾ß·ÖÎöÕâЩÄÚ´æ·ÖÅäÀúÊ·ÐÅÏ¢£¬¿ÉÒÔ²é³öÄÚ´æ´íÎóµÄλÖã¨mtraceÔÚglibc-utilsÈí¼þ°üÀï)¡£
2. strace
ÔÚ±à³Ìʱ£¬¼ì²éº¯ÊýµÄ·µ»ØÖµÊÇÒ»ÖÖºÃÏ°¹ß¡£¶ÔÓÚÏñglibcµÈ±ê×¼CµÄº¯Êý£¬¹â¼ì²é·µ»ØÖµÊDz»¹»µÄ£¬»¹ÐèÒª¼ì²éerrnoµÄÖµ¡£ÕâÑùµÄ³ÌÐòÍùÍùÏÔµÃÈß³¤£¬²»¹»¼ò½à¡£Í¬Ê±Ò²¿ÉÄÜÊdzöÓÚ͵ÀÁµÄÔÒò£¬´ó¶àÊý³ÌÐòÀﲢûÓÐ×öÕâÑùµÄ¼ì²é¡£
ÕâÑùµÄ³ÌÐò£¬Ò»µ©³öÏÖ´íÎó£¬Óõ÷ÊÔÆ÷Ò»²½Ò»²½¶¨Î»´íÎó£¬È»ºóÏë·¨²é³ö´íÎóµÄÔÒò£¬Ò²ÊÇ¿ÉÒԵģ¬²»¹ý±È½ÏÂé·³£¬¶Ôµ÷ÊÔÆ÷À´ËµÓÐЩ´ó²ÄСÓ㬲»Ì«¿ÉÈ¡¡£Õâʱ£¬ÓÃstraceÃüÁî¿ÉÄÜ»á¸
Ïà¹ØÎĵµ£º
import sun.misc.Signal;
import sun.misc.SignalHandler;
/***
* javaÐźŴ¦Àídemo
* @author jiang_qh
*
*/
public class SignalHandlerExample implements SignalHandler{
private SignalHandler oldHandler;
public void handle(Signal signal) {
System.out.println("Signal handler called for signal " ......
±¾ÎIJ¢·Ç½âÊÍʲôÊÇ·Ç×èÈûsocket£¬Ò²²»ÊǽéÉÜsocket APIµÄÓ÷¨£¬ È¡¶ø´úÌæµÄÊÇÈÃÄã¸ÐÊÜʵ¼Ê¹¤×÷ÖеĴúÂë±àд¡£ËäÈ»ºÜ¼òª£¬µ«Äã¿ÉÒÔͨ¹ýmanÊÖ²áÓëÆäËü×ÊÔ´·Ç¸»ÄãµÄ´úÂë¡£Çë×¢Òâ±¾½Ì³ÌËù˵µÄÖ÷Ì⣬Èç¹ûϸ˵£¬ÄÚÈÝ¿ÉÒÔ´ïµ½Ò»±¾ÊéÄÚÈÝ£¬Äã»á·¢ÏÖ±¾½Ì³ÌºÜÓÐÓá£
±¾½Ì³ÌÄÚÈÝÈçÏ£º
......
ѹËõºÍ´ò°üÎļþ
¡¡¡¡* .bz2 — ʹÓÃbzip2ÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃbzip2 -d filename ½â°ü
¡¡¡¡* .gz — ʹÓÃgzipÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃgunzip -d filename ½â°ü
¡¡¡¡* .tar — ʹÓÃtar´ò°üµÄÎļþ£¬¼´tarballÎļþ£¬¿ÉÒÔʹÓÃtar xf filename ½â°ü
¡¡¡¡* .tbz — ʹÓÃtar´òÍê°üºóÔÙÒÔbzip2ÃüÁ ......
1. LinusºÍBill
ËƺõÔÚÒ»Ò¹Ö®¼ä£¬Õâ¸öÃû×ÖͻȻ±äµÃͬÏó±È¶û¡£¸Ç´ÄÒ»ÑùµÄ¶úÊìÄÜÏê¡£µ«ÊDZȶû¡£¸Ç´Ä£¬ÄÄÅÂÉí¼ÛÓÐÊý²»Ç屶µÄ°ÙÍòÃÀ½ð£¬Ò²ÓÀÔ¶²»»á±ä³ÉLinux Torvalds¡£Õâλ29ËêµÄ·ÒÀ¼ÈË£¬¼òµ¥¶øÇ¿´óµÄLinux²Ù×÷ϵͳµÄ´´ÔìÕߣ¬³¬Ô½Á˸ǴĵÄÉñ»°¡£Ò²Óд«ÎÅ˵¸Ç´ÄÊÇÒ»¸ö׿ԽµÄ³ÌÐòÔ±£¬µ«LinusÊÇ»õÕæ¼ÛʵµÄ¸ßÊ ......
Ò»¸ö³ÌÐòµÄ¿ª·¢Àë²»¿ªÐí¶à¿âº¯ÊýµÄÖ§³Ö£¬¿ÉÊÇ¿âÈç´ËÖ®¶à£¬ÓпªÔ´Ãâ·ÑµÄÒ²ÓÐÊշѵġ£ºÜÏ£ÍûÊìϤ±à³ÌµÄÇ°±²°Ñ×Ô¼ºµÄ¾ÑéÕûÀíÏ£¬³£ÓõĿⶼ°üº¬ÄÄЩ¹¦ÄÜ¡£ÏÂÎÄÊÇÔÚÍøÉÏÕÒµÄÒ»¸öÀàËƵÄ×ÊÁÏ¡£ÆÚ´ý¸ü¶à¸üÈ«µÄÄÚÈÝ¡£
---------------------------------------------------------------------------------------------------
¿´µ ......