[Pthread] LinuxÉϳÌÐòµ÷ÊԵĻùʯ(Ò»)
ÔÎĵØÖ·£ºhttp://blog.csdn.net/Javadino/archive/2008/09/06/2891413.aspx
Òý×Ó:
1.ÔÚLinuxϵͳÖУ¬½ø³Ì״̬³ýÁËÎÒÃÇËùÊìÖªµÄTASK_RUNNING£¬TASK_INTERRUPTIBLE£¬TASK_STOPPEDµÈ£¬»¹ÓÐÒ»¸öTASK_TRACED¡£Õâ±íÃ÷Õâ¸ö½ø³Ì´¦ÓÚʲô״̬£¿
2.strace¿ÉÒÔ·½±ãµÄ°ïÖúÎÒÃǼǼ½ø³ÌËùÖ´ÐеÄϵͳµ÷Óã¬ËüÊÇÈçºÎ¸ú×Ùµ½½ø³ÌÖ´Ðеģ¿
3.gdbÊÇÎÒÃǵ÷ÊÔ³ÌÐòµÄÀûÆ÷£¬¿ÉÒÔÉèÖöϵ㣬µ¥²½¸ú×Ù³ÌÐò¡£ËüµÄʵÏÖÔÀíÓÖÊÇʲô£¿
ËùÓÐÕâÒ»Çеı³ºó¶¼Òþ²Ø×ÅLinuxËùÌṩµÄÒ»¸öÇ¿´óµÄϵͳµ÷ÓÃptrace().
1.ptraceϵͳµ÷ÓÃ
ptrace
ϵͳµ÷´ÓÃû×ÖÉÏ¿´ÊÇÓÃÓÚ½ø³Ì¸ú×ٵģ¬ËüÌṩÁ˸¸½ø³Ì¿ÉÒÔ¹Û²ìºÍ¿ØÖÆÆä×Ó½ø³ÌÖ´ÐеÄÄÜÁ¦£¬²¢ÔÊÐí¸¸½ø³Ì¼ì²éºÍÌæ»»×Ó½ø³ÌµÄÄں˾µÏñ(°üÀ¨¼Ä´æÆ÷)µÄÖµ¡£Æä»ù
±¾ÔÀíÊÇ:
µ±Ê¹ÓÃÁËptrace¸ú×Ùºó£¬ËùÓз¢Ë͸ø±»¸ú×ÙµÄ×Ó½ø³ÌµÄÐźÅ(³ýÁËSIGKILL)£¬¶¼»á±»×ª·¢¸ø¸¸½ø³Ì£¬¶ø×Ó½ø³ÌÔò»á±»×èÈû£¬Õâʱ×Ó½ø³ÌµÄ״̬¾Í»á±»
ϵͳ±êעΪTASK_TRACED¡£¶ø¸¸½ø³ÌÊÕµ½Ðźź󣬾ͿÉÒÔ¶ÔÍ£Ö¹ÏÂÀ´µÄ×Ó½ø³Ì½øÐмì²éºÍÐ޸ģ¬È»ºóÈÃ×Ó½ø³Ì¼ÌÐøÔËÐС£
ÆäÔÐÍΪ£º
#include <sys/ptrace.h>
long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
ptraceÓÐËĸö²ÎÊý:
1). enum __ptrace_request request£ºÖ¸Ê¾ÁËptraceÒªÖ´ÐеÄÃüÁî¡£
2). pid_t pid: ָʾptraceÒª¸ú×ٵĽø³Ì¡£
3). void *addr: ָʾҪ¼à¿ØµÄÄÚ´æµØÖ·¡£
4). void *data: ´æ·Å¶ÁÈ¡³öµÄ»òÕßҪдÈëµÄÊý¾Ý¡£
ptraceÊÇÈç´ËµÄÇ¿´ó£¬ÒÔÖÁÓÚÓкܶà´ó¼ÒËù³£ÓõŤ¾ß¶¼»ùÓÚptraceÀ´ÊµÏÖ£¬ÈçstraceºÍgdb¡£½ÓÏÂÀ´£¬ÎÒÃǽèÓɶÔstraceºÍgdbµÄʵÏÖ£¬À´¿´¿´ptraceÊÇÈçºÎʹÓõġ£
2. straceµÄʵÏÖ
strace³£³£±»ÓÃÀ´À¹½ØºÍ¼Ç¼½ø³ÌËùÖ´ÐеÄϵͳµ÷Óã¬ÒÔ¼°½ø³ÌËùÊÕµ½µÄÐźš£ÈçÓÐÕâôһ¶Î³ÌÐò£º
HelloWorld.c:
#include <stdio.h>
int main(){
printf("Hello World!\n");
return 0;
}
±àÒëºó£¬ÓÃstrace¸ú×Ù£º strace ./HelloWorld
¿ÉÒÔ¿´µ½ÐÎÈç:
execve("./HelloWorld", ["./HelloWorld"], [/* 67 vars */]) = 0
brk(0) &
Ïà¹ØÎĵµ£º
The physical memory map for Linux is completely independent from the virtual map and is designed to maximize contiguous space. Given that the kernel image will always be at the start of DRAM, the Linux kernel maximizes contiguous space by allocating runtime memory from the end of physical DRAM movin ......
²éÕÒ °üº¬alias×Ö·û´®µÄ*.confµÄÎļþ
find / -name "*.conf" | xargs grep "alias"
1. grep -R -l һЩҲ¿ÉÒÔʵÏÖ£¬µ«ÊÇͨ¹ý¹ÜµÀ | ±Èµ¥´¿ÓÃgrep ¸´ÔӵIJÎÊý¸üÓÐЧÂÊ¡£
2. xargsÊÇÓÃÀ´Õ¹¿ªfind»ñµÃµÄ½á¹û£¬Ê¹Æä×÷ΪgrepµÄ²ÎÊý¡£ ......
²ÉÓù²ÏíÄÚ´æÍ¨ÐŵÄÒ»¸öÏÔ¶øÒ×¼ûµÄºÃ´¦ÊÇЧÂʸߣ¬ÒòΪ½ø³Ì¿ÉÒÔÖ±½Ó¶ÁдÄڴ棬¶ø²»ÐèÒªÈκÎÊý¾ÝµÄ¿½±´¡£¶ÔÓÚÏñ¹ÜµÀºÍÏûÏ¢¶ÓÁеÈͨÐÅ·½Ê½£¬ÔòÐèÒªÔÚÄÚ
ºËºÍÓû§¿Õ¼ä½øÐÐËĴεÄÊý¾Ý¿½±´£¬¶ø¹²ÏíÄÚ´æÔòÖ»¿½±´Á½´ÎÊý¾Ý[1]£ºÒ»´Î´ÓÊäÈëÎļþµ½¹²ÏíÄÚ´æÇø£¬ÁíÒ»´Î´Ó¹²ÏíÄÚ´æÇøµ½Êä³öÎļþ¡£Êµ¼ÊÉÏ£¬½ø³ÌÖ®¼äÔÚ¹²
ÏíÄÚ´æÊ±£¬²¢²»×ÜÊ ......
linuxÖУ¬Í¨¹ý
ls -al
ÏÔʾµÄÊôÐÔÖУ¬µÚÒ»¸ö¾Í±êÖ¾ÎļþÀàÐÍ¡£Í¨³£ÓÐһϼ¸ÖÖÇé¿ö£º
[ - ]££££ÆÕͨÎļþ
[ d]££££Ä¿Â¼
[ l ]££££Á¬½ÓÎļþ
[ b]££££¿éÉ豸
[ c ]££££×Ö·ûÉ豸
[ s ]££££Ì×½á×Ö
[ p ]££££¹ÜµÀ ......
ÍøÉÏÕÒµ½ÁËÐí¶à¹ØÓÚÕâ·½ÃæµÄÎÄÕ£¬ÄÚÈÝ»ù±¾Ïàͬ¡£¾¹ýʵ¼ù£¬·¢ÏÖÄÚÈÝÀïÆÕ±é´æÔÚÎÊÌâ¡£ÒÔÏÂÊÇ×Ô¼ºÊµ¼ùÖ®ºó£¬ÐÞ¸ÄÁËÆäÖеĴíÎ󣬲¢¼Ç¼ÏÂÀ´µÄ±Ê¼Ç¡£
ÔÚ Linux »ò UNIX Ï嵀 Apache ·þÎñÆ÷ÖиøÍøÒ³ÉèÖÃÃÜÂë—ÕâÊÇÒ»Öֺܼòµ¥µÄ»ùÓÚÓû§Ãû/¿ÚÁîµÄÈÏÖ¤·½Ê½£ ......