Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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ÏÂC¿ª·¢Ö®gcc,gdbµÄʹÓÃ

gcc£¬gdbµÄʹÓÃ
×÷Õߣºzccst
 
ÉÏÖÜÎåÔÚͼÊé¹Ý½èÁËÒ»±¾¡¶LinuxÈí¼þ¹¤³Ìʦ£¨CÓïÑÔ£©ÊµÓý̡̳·£¬ÈÃÎÒÊÕ»ñÁ¼¶à¡£²»½ö½öÊÇÊéÖеÄ֪ʶ£¬»¹ÓжÔ֪ʶÌåϵºÍ¼Ü¹¹ÈÏʶµÄÉîÈë¡£
 
LinuxÏÂC¿ª·¢£º
1£¬gcc,gdbµÄʹÓá£
2£¬MakefileÎļþµÄ±àд¡£
3£¬ÏµÍ³º¯ÊýµÄʹÓÃ
4£¬Îļþ²Ù×÷
5£¬´®ÐÐͨÐÅ
6£¬½ø³Ì¿ØÖÆ
7£¬½ø³Ì¼ ......

linux pppoe

ÊÖÍ·Óиöep9315µÄ°å£¬½ñÌìͻȻÏëÆðÅÜÒ»ÏÂadslÉÏÍø¡£ÍíÉÏ»ØÀ´¾Í¿ªÊ¼¸ã¡£
´Ó10µãµ½ÏÖÔÚ£¬ÖÕÓÚÄܹ»ÅÜÆðÀ´¡£
¸ø´ó¼Ò½è¼øÒ»Ï¡£
1.±àÒëÄںˣ¬°ÑpppµÄÄÇЩѡÏîÑ¡ÉÏ¡£ (ÎÒÓÃ2.6.8.1µÄkernel£¬cirrus µÄpatch)
2.libpcap-0.9.1 Õâ¸ö°üÊÇpppdÐèÒªµÄ¡£
./configure CC=arm-linux-gcc CFLAGS=-msoft-float --target=arm-linu ......

ǶÈëʽ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 ......

LINUX»·¾³½ø³Ì¼äͨÐÅ

linuxÐźŻúÖÆÔ¶Ô¶±ÈÏëÏóµÄ¸´ÔÓ£¬±¾ÎÄÁ¦ÕùÓÃ×î¶ÌµÄƪ·ù£¬¶Ô¸Ã»úÖÆ×öÁËÉîÈëϸÖµķÖÎö¡£¶ÁÕß¿ÉÒÔÏȶÁÒ»ÏÂÐźÅÓ¦ÓÃʵÀý£¨ÔÚÐźţ¨Ï£©ÖУ©£¬ÕâÑù¿ÉÒÔ¶ÔÐźŷ¢ËÍÖ±µ½ÏàÓ¦µÄ´¦Àíº¯ÊýÖ´ÐÐÍê±ÏÕâÒ»¹ý³ÌÓиö´óÖµÄÓ¡Ïó¡£±¾Îľ¡Á¿¸ø³öÁ˽Ïк¯ÊýµÄÓ¦ÓÃʵÀý£¬×ÅÖØËµÃ÷ÕâЩµÄ¹¦ÄÜ¡£
Ò»¡¢Ðźż°ÐźÅÀ´Ô´
Ðźű¾ÖÊ

Ð ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ