Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

[Pthread] Linux³ÌÐòµ÷ÊԵĻùʯ(¶þ)


3. GDBµÄʵÏÖ
GDBÊÇGNU·¢²¼µÄÒ»¸öÇ¿´óµÄ³ÌÐòµ÷ÊÔ¹¤¾ß£¬ÓÃÒÔµ÷ÊÔC/C++³ÌÐò¡£¿ÉÒÔʹ³ÌÐòÔ±ÔÚ³ÌÐòÔËÐеÄʱºò¹Û²ì³ÌÐòÔÚÄÚ´æ/¼Ä´æÆ÷ÖеÄʹÓÃÇé¿ö¡£ËüµÄʵÏÖÒ²ÊÇ»ùÓÚptraceϵͳµ÷ÓÃÀ´Íê³ÉµÄ¡£
Æä
Ô­ÀíÊÇÀûÓÃptraceϵͳµ÷Óã¬ÔÚ±»µ÷ÊÔ³ÌÐòºÍgdbÖ®¼ä½¨Á¢¸ú×Ù¹ØÏµ¡£È»ºóËùÓз¢Ë͸ø±»µ÷ÊÔ³ÌÐòµÄÐźÅ(³ýSIGKILL)¶¼»á±»gdb½Ø»ñ£¬gdb
¸ù¾Ý½Ø»ñµÄÐźţ¬²é¿´±»µ÷ÊÔ³ÌÐòÏàÓ¦µÄÄÚ´æµØÖ·£¬²¢¿ØÖƱ»µ÷ÊԵijÌÐò¼ÌÐøÔËÐС£GDB³£ÓõÄʹÓ÷½·¨ÓжϵãÉèÖú͵¥²½¸ú×Ù£¬½ÓÏÂÀ´ÎÒÃÇÀ´·ÖÎöÒ»ÏÂËûÃÇÊÇÈç
ºÎʵÏֵġ£
3.1 ½¨Á¢µ÷ÊÔ¹ØÏµ
ÓÃgdbµ÷ÊÔ³ÌÐò£¬¿ÉÒÔÖ±½Ógdb ./test,Ò²¿ÉÒÔgdb <pid>(testµÄ½ø³ÌºÅ)¡£Õâ¶ÔÓ¦×ÅʹÓÃptrace½¨Á¢¸ú×Ù¹ØÏµµÄÁ½ÖÖ·½Ê½:
1)fork: ÀûÓÃfork+execveÖ´Ðб»²âÊԵijÌÐò£¬×Ó½ø³ÌÔÚÖ´ÐÐexecve֮ǰµ÷ÓÃptrace(PTRACE_TRACEME)£¬½¨Á¢ÁËÓ븸½ø³Ì(debugger)µÄ¸ú×Ù¹ØÏµ¡£ÈçÎÒÃÇÔÚ·ÖÎöstraceʱËùʾÒâµÄ³ÌÐò¡£
2)attach:
debugger¿ÉÒÔµ÷ÓÃptrace(PTRACE_ATTACH£¬pid,...)£¬½¨Á¢×Ô¼ºÓë½ø³ÌºÅΪpidµÄ½ø³Ì¼äµÄ¸ú×Ù¹ØÏµ¡£¼´ÀûÓÃ
PTRACE_ATTACH£¬Ê¹×Ô¼º±ä³É±»µ÷ÊÔ³ÌÐòµÄ¸¸½ø³Ì(ÓÃps¿ÉÒÔ¿´µ½)¡£ÓÃattach½¨Á¢ÆðÀ´µÄ¸ú×Ù¹ØÏµ£¬¿ÉÒÔµ÷ÓÃptrace
(PTRACE_DETACH£¬pid,...)À´½â³ý¡£×¢Òâattach½ø³ÌʱµÄȨÏÞÎÊÌ⣬ÈçÒ»¸ö·ÇrootȨÏ޵Ľø³ÌÊDz»ÄÜattachµ½Ò»¸ö
root½ø³ÌÉϵġ£
3.2 ¶ÏµãÔ­Àí
¶ÏµãÊÇ´ó¼ÒÔÚµ÷ÊÔ³ÌÐòʱ³£ÓõÄÒ»¸ö¹¦ÄÜ,Èçbreak linenumber£¬µ±Ö´Ðе½linenumberÄÇÒ»ÐеÄʱºò±»µ÷ÊÔ³ÌÐò»áÍ£Ö¹£¬µÈ´ýdebuggerµÄ½øÒ»²½²Ù×÷¡£
¶ÏµãµÄʵÏÖÔ­Àí£¬¾ÍÊÇÔÚÖ¸¶¨µÄλÖòåÈë¶ÏµãÖ¸Áµ±±»µ÷ÊԵijÌÐòÔËÐе½¶ÏµãµÄʱºò£¬²úÉúSIGTRAPÐźš£¸ÃÐźű»gdb²¶»ñ²¢½øÐжϵãÃüÖÐÅж¨£¬µ±gdbÅжϳöÕâ´ÎSIGTRAPÊǶϵãÃüÖÐÖ®ºó¾Í»áתÈëµÈ´ýÓû§ÊäÈë½øÐÐÏÂÒ»²½´¦Àí£¬·ñÔò¼ÌÐø¡£
¶ÏµãµÄÉèÖÃÔ­Àí: ÔÚ³ÌÐòÖÐÉèÖöϵ㣬¾ÍÊÇÏȽ«¸ÃλÖõÄÔ­À´µÄÖ¸Áî±£´æ£¬È»ºóÏò¸ÃλÖÃдÈëint 3¡£µ±Ö´Ðе½int 3µÄʱºò£¬·¢ÉúÈíÖжϣ¬ÄÚºË»á¸ø×Ó½ø³Ì·¢³öSIGTRAPÐźţ¬µ±È»Õâ¸öÐźŻᱻת·¢¸ø¸¸½ø³Ì¡£È»ºóÓñ£´æµÄÖ¸ÁîÌæ»»int3,µÈ´ý»Ö¸´ÔËÐС£
¶ÏµãÃüÖÐÅж¨:gdb°ÑËùÓеĶϵãλÖö¼´æ·ÅÔÚÒ»¸öÁ´±íÖУ¬ÃüÖÐÅж¨¼´°Ñ±»µ÷ÊÔ³ÌÐòµ±Ç°Í£Ö¹µÄλÖúÍÁ´±íÖеĶϵãλÖýøÐбȽϣ¬¿´ÊǶϵã²úÉúµÄÐźţ¬»¹ÊÇÎÞ¹ØÐźš£
3.3 µ¥²½¸ú×ÙÔ­Àí
µ¥²½¸ú×Ù¾ÍÊÇÖ¸ÔÚµ÷ÊÔ³ÌÐòµÄʱºò£¬ÈóÌÐòÔËÐÐÒ»ÌõÖ¸Áî/Óï¾äºó¾Íͣϡ£GDBÖг£ÓõÄÃüÁîÓÐnext, step, nexti, stepi¡£µ¥²½¸ú×ÙÓÖ³£·ÖΪÓï¾äµ¥²½(next, step)ºÍÖ¸Áîµ¥²½(È


Ïà¹ØÎĵµ£º

ǶÈëʽLinuxÎïÀíÄÚ´æÓ³Éä

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 ......

ʹÓà /proc ÎļþϵͳÀ´·ÃÎÊ Linux Äں˵ÄÄÚÈÝ


Õâ¸öÐéÄâÎļþϵͳÔÚÄں˿ռäºÍÓû§¿Õ¼äÖ®¼ä´ò¿ªÁËÒ»¸öͨÐÅ´°¿Ú
ÎĵµÑ¡Ïî
´òÓ¡±¾Ò³
½«´ËÒ³×÷Ϊµç×ÓÓʼþ·¢ËÍ
ÑùÀý´úÂë
¼¶±ð£º ³õ¼¶
M. Tim Jones (mtj@mtjones.com), ×ÊÉîÊ×ϯÈí¼þ¹¤³Ìʦ, Emulex
2006 Äê 4 ÔÂ 24 ÈÕ
/proc ÎļþϵͳÊÇÒ»¸öÐéÄâÎļþϵͳ£¬Í¨¹ýËü¿ÉÒÔʹÓÃÒ»ÖÖÐµķ½·¨ÔÚ Linux® Äں˿ռäºÍÓà ......

linuxÐźűà³Ìʵ¼ù

¼òµ¥µÄ˵£¬ÐźžÍÊÇÔÚÈí¼þ²ã´ÎÉ϶ÔÖжϻúÖÆµÄÒ»ÖÖÄ£Ä⣬ÊÇÒ»ÖÖÒ첽ͨÐÅ·½Ê½¡£Ëü¿ÉÒÔʵÏÖÄں˽ø³ÌºÍÓû§½ø³ÌÖ®¼äµÄ½»»¥¡£ÊµÏÖ·½Ê½ÊÇ£¬ÔÚÈκÎʱºò·¢¸ø
ijһ½ø³Ì£¬Èç¹û¸Ã½ø³ÌûÓд¦ÓÚÖ´ÐÐ̬£¬Ôò¸ÃÐźÅÓÉÄں˱£´æ£¬Ö±µ½¸Ã½ø³Ì»Ö¸´Ö´ÐÐÔÙ´«µÝ¸øËüΪֹ¡£Èç¹ûÒ»¸öÐźŽø³ÌÉèÖÃΪ×èÈû£¬Ôò¸ÃÐźŵĴ«µÝ±»ÑÓ³Ù£¬Ö±µ½
Æä×èÈû±»È¡Ïûʱ ......

Linux Ô¶³ÌµÇ¼·þÎñ£ºtelnetºÍssh

Linux Ô¶³ÌµÇ¼·þÎñ£ºtelnetºÍssh
ͨ³£Çé¿öÏÂÔ¶³ÌµÇ¼ÎÒÃÇʹÓÃtelnet·þÎñ£¬Red Hat
Linux´øÓÐtelnet·þÎñÆ÷µÄÈí¼þ°ü£¬ÎÒÃÇÐèÒª°²×°telnet-serverºÍxinetdÁ½¸öÈí¼þ°ü£º
[root@rh73 ~]# rpm -ivh
/mnt/cdrom/RedHat/RPMS/telnet-server-0.17-20.i386.rpm
[root@rh73 ~]# rpm -ivh
/mnt/cdrom/RedHat/RPMS/xinetd-2.3.4-0 ......

[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¿ÉÒÔ·½±ãµÄ°ïÖúÎÒÃǼǼ½ø³ÌËùÖ´ÐеÄϵͳµ÷Óã¬ËüÊÇÈçºÎ¸ú×Ùµ½½ø³ÌÖ´ÐÐµÄ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ