×÷Õߣºdio
email: hao@peng.com.cn
ÈÕÆÚ£º8/21/2001 1:00:47 PM
ÄÚÈÝ£º
±àÒë
ÔËÐÐ gdb
µ÷ÊԻỰʾÀý
ʹÓöϵã
¸ü¶à¶ÏµãºÍ¹Û²ìµã
Core Îļþ
¶ÑÕ»¸ú×Ù
Á¬½Óµ½ÆäËü½ø³Ì
ÆäËüС¼¼ÇÉ
½áÊøÓï
²Î¿¼×ÊÁÏ
¹ØÓÚ×÷Õß
GNU µ÷ÊÔÆ÷¼ò½é
×÷Õß:David Seager
Linux µÄ´ó²¿·ÖÌØÉ«Ô´×ÔÓÚ shell µÄ GNU µ÷ÊÔÆ÷£¬Ò²³Æ×÷ gdb¡£gdb ¿ÉÒÔÈÃÄú²é¿´³ÌÐòµÄÄÚ²¿½á¹¹¡¢´òÓ¡±äÁ¿Öµ¡¢ÉèÖöϵ㣬ÒÔ¼°µ¥²½µ÷ÊÔÔ´´úÂë¡£ËüÊǹ¦Äܼ«ÆäÇ¿´óµÄ¹¤¾ß£¬ÊÊÓÃÓÚÐÞ¸´³ÌÐò´úÂëÖеÄÎÊÌâ¡£ÔÚ±¾ÎÄÖУ¬ÎÒ½«³¢ÊÔ˵Ã÷ gdb Óжà°ô£¬¶àʵÓá£
±àÒë
¿ªÊ¼µ÷ÊÔ֮ǰ£¬±ØÐëÓóÌÐòÖеĵ÷ÊÔÐÅÏ¢±àÒëÒªµ÷ÊԵijÌÐò¡£ÕâÑù£¬gdb ²ÅÄܹ»µ÷ÊÔËùʹÓõıäÁ¿¡¢´úÂëÐкͺ¯Êý¡£Èç¹ûÒª½øÐбàÒ룬ÇëÔÚ gcc£¨»ò g++£©ÏÂʹÓöîÍâµÄ -g Ñ¡ÏîÀ´±àÒë³ÌÐò£º
gcc -g eg.c -o eg
ÔËÐÐ gdb
ÔÚ shell ÖУ¬¿ÉÒÔʹÓà gdb ÃüÁî²¢Ö¸¶¨³ÌÐòÃû×÷Ϊ²ÎÊýÀ´ÔËÐÐ gdb£¬ÀýÈç gdb eg£»»òÕßÔÚ gdb ÖУ¬¿ÉÒÔʹÓà file ÃüÁîÀ´×°ÈëÒªµ÷ÊԵijÌÐò£¬ÀýÈç file eg¡£ÕâÁ½ÖÖ·½Ê½¶¼¼ÙÉèÄúÊÇÔÚ°üº¬³ÌÐòµÄĿ¼ÖÐÖ´ÐÐÃüÁî¡£×°Èë³ÌÐòÖ®ºó£¬¿ÉÒÔÓà gdb ÃüÁî un À´Æô¶¯³ÌÐò¡£
µ÷ÊԻỰʾÀý
Èç¹ûÒ»ÇÐÕý³££¬³ÌÐò½«Ö´Ðе½½áÊø£¬´Ëʱ gdb ½«ÖØÐ»ñµÃ¿ ......
ʹÓÃTAB¼ü
ÓÃÊó±ê¿½±´ºÍÕ³ÌùÌá¸ß²Ù×÷ËÙ¶È ×ó¼üÍ϶¯---¿½±´ Öмüµã»÷---Õ³Ìù
1¡¢mkdir ½¨Á¢ÐÂĿ¼Ãû ¼Ó“." ÔÚĿ¼ÃûǰΪÒþ²ØÄ¿Â¼£¨ls -a¿É²é¿´£©
rm -rf Ŀ¼Ãû ɾ³ýĿ¼¼°×ÓĿ¼ rm -- -eeɾ³ý-eeÎļþ »òÕß rm "ÎļþÃû"
2¡¢mv ÀÏÎļþÃû ÐÂÎļþÃû ¸Ä±äÎļþ/Ŀ¼Ãû×Ö
cp ÀÏÎļþÃû ÐÂÎļþÃû ¸´ÖÆÄ¿Â¼ -R£¨¸´ÖÆÄ¿Â¼£©
3¡¢halt ¹Ø»ú reboot ÖØÆð
4¡¢mount (-t iso9660) /dev/cdrom /mnt/cdrom À¨ºÅÀïΪָ¶¨ÎļþÀàÐÍ£¬Ò»°ã¿É²»Óã¬linuxÒ»°ã»á×Ô¶¯Ê¶±ðÎļþÀàÐÍ
umount /mnt/cdrom »ò umount /dev/cdrom ÔÚÈ¡³ö¹âÅÌ»òÈíÅÌʱ£¬±ØÐëÏÈÔËÐÐÕâÌõÖ¸Áî
5¡¢¹ÜµÀÃüÁ
“|” ls /dev | more /devĿ¼µÄÎļþÒ»Ò³²»ÄÜÏÔʾÍ꣬more¿ÉÒÔ¶àÒ³ÏÔʾÍê
ÓÃÎļþ¼Ç¼ls /dev µÄËùÓнá¹û
ls /dev >file.txt Ŀ¼ÀïûÓÐfile.txt Ôò»á´´½¨Ò»¸öfile.txtÎļþ£¬Ä¿Â¼ÀïÓеϰÔò»á¸²¸Çfile.txt
&nb ......
umask()º¯Êý£º´Ëº¯ÊýµÄÖ÷Òª×÷ÓÃÊÇÔÚ´´½¨ÎļþʱÉèÖûòÕ߯Á±ÎµôÎļþµÄһЩȨÏÞ¡£Ò»°ãÓëopen()º¯ÊýÅäºÏʹÓá£openº¯ÊýÔÐÍ£º
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int open( const char * pathname, int flags);
int open( const char * pathname,int flags, mode_t mode);
µ±´´½¨Ò»¸öÎļþ²¢ÇÒÒªÃ÷È·Ö¸¶¨´ËÎļþµÄȨÏÞʱ£¬Ó¦¸ÃʹÓõڶþ¸öopen()º¯Êý£¬Ã÷È·Ö¸¶¨mode²ÎÊý£¬Ëù´´½¨µÄÎļþ×îºóµÄȨÏÞÊÇ£ºmode&(~mask)¡£Ä¬ÈϵÄmaskÖµÊÇ£º022
Àý£º
int main()
{
int fd;
umask(0026);
fd = open("test.txt",O_RDWR | O_CREAT,0666);
if(fd < 0)
perror("open");
return 0;
}
ÔòÉú³ÉµÄtest.txtÎļþµÄȨÏÞÊÇ£º666&(~026)½á¹ûÊÇ£º-rw-r--r--¡£Èç¹ûûÓÐumask(0026);ÕâÌõÓï¾ä£¬ÔòÉú³ÉµÄtest.txtÎļþµÄȨÏÞÊÇ£º666&(~022)½á¹ûÊÇ£º-rw-r-----¡£×¢£ºopenº¯ÊýµÄmode²ÎÊýÖ»ÓÐÔÚ´´½¨Îļþʱ²ÅÓÐЧ¡£
  ......
LinuxϵͳÏ£¬ÐèÒª´óÁ¿µÄÃüÁîÐÐÑ¡ÏÈç¹û×Ô¼ºÊÖ¶¯½âÎöËûÃǵĻ°ÊµÔÚÊÇÓÐÎ¥Èí¼þ¸´ÓõÄ˼Ï룬²»¹ý»¹ºÃ£¬GNU C libraryÁô¸øÎÒÃÇÒ»¸ö½âÎöÃüÁîÐеĽӿÚ(X/Open¹æ·¶)£¬ºÃºÃʹÓÃËü¿ÉÒÔʹÄãµÄ³ÌÐò¸Ä¹Û²»ÉÙ¡£
ʹÓÃgetopt_long()ÐèÒªÒýÈëÍ·Îļþ
#include <getopt.h>
ÏÖÔÚÎÒÃÇʹÓÃÒ»¸öÀý×ÓÀ´ËµÃ÷ËüµÄʹÓá£
Ò»¸öÓ¦ÓóÌÐòÐèÒªÈçϵĶÌÑ¡ÏîºÍ³¤Ñ¡Ïî¡£
¶ÌÑ¡Ïî ³¤Ñ¡Ïî ×÷ÓÃ
-h --help Êä³ö³ÌÐòÃüÁîÐвÎÊý˵Ã÷È»ºóÍ˳ö
&nbs ......
Ëæ×ÅLinuxÓ¦ÓõÄÀ©Õ¹Ðí¶àÅóÓÑ¿ªÊ¼½Ó´¥Linux£¬¸ù¾ÝѧϰWindwosµÄ¾ÑéÍùÍùÓÐһЩãȻµÄ¸Ð¾õ£º²»Öª´ÓºÎ´¦¿ªÊ¼Ñ§Æð¡£ÕâÀï½éÉÜѧϰLinuxµÄһЩ½¨Òé¡£
Ò»¡¢´Ó»ù´¡¿ªÊ¼£º ³£³£ÓÐЩÅóÓÑÔÚLinuxÂÛ̳ÎÊһЩÎÊÌ⣬²»¹ý£¬ÆäÖдó¶àÊýµÄÎÊÌâ¶¼ÊǺܻù´¡µÄ¡£ÀýÈ磺ΪʲôÎÒʹÓÃÒ»¸öÃüÁîµÄʱºò£¬ÏµÍ³¸æËßÎÒÕÒ²»µ½¸ÃĿ¼£¬ÎÒÒªÈçºÎÏÞÖÆÊ¹ÓÃÕßµÄȨÏÞµÈÎÊÌ⣬ÕâЩÎÊÌâÆäʵ¶¼²»ÊǺÜÄѵģ¬Ö»ÒªÁ˽âÁË Linux µÄ»ù´¡Ö®ºó£¬Ó¦¸Ã¾Í¿ÉÒÔºÜÇáÒ׵Ľâ¾öµôÕâ·½ÃæµÄÎÊÌâ¡£¶øÓÐЩÅóÓÑÃdz£³£Ò»½Ó´¥Linux ¾ÍÊÇÏ£Íû¹¹¼ÜÍøÕ¾£¬¸ù±¾Ã»ÓÐÏëµ½ÒªÏÈÁ˽âÒ»ÏÂLinux µÄ»ù´¡¡£ÕâÊÇÏ൱À§Äѵġ£
¶þ¡¢LinuxÃüÁîÊDZØÐëѧϰ ËäÈ»Linux×ÀÃæÓ¦Ó÷¢Õ¹ºÜ¿ì£¬µ«ÊÇÃüÁîÔÚLinuxÖÐÒÀÈ»ÓкÜÇ¿µÄÉúÃüÁ¦¡£LinuxÊÇÒ»¸öÃüÁîÐÐ×é³ÉµÄ²Ù×÷ϵͳ,¾«ËèÔÚÃüÁîÐУ¬ÎÞÂÛͼÐνçÃæ·¢Õ¹µ½Ê²Ã´Ë®Æ½Õâ¸öÔÀíÊDz»»á±äµÄ£¬LinuxÃüÁîÓÐÐí¶àÇ¿´óµÄ¹¦ÄÜ£º´Ó¼òµ¥µÄ´ÅÅ̲Ù×÷¡¢Îļþ´æÈ¡¡¢µ½½øÐи´ÔӵĶàýÌåͼÏóºÍÁ÷ýÌåÎļþµÄÖÆ×÷¡£¾ÙÒ»¸öÀý×Ó:LinuxµÄ³£ÓÃÃüÁîfind,²ì¿´manÎĵµ,³õѧÕßÒ»¶¨»á¾õµÃÌ«¸´ÔÓ¶ø²»ÔÒâÓÃ,µ«ÊÇÄãÒ»µ©Ñ§»á¾Í°®²»ÊÍÊÖ.ËüµÄ¹¦ÄÜʵÔÚ̫ǿÁË,ÔÚÅäºÏexec²ÎÊý»òÕßͨ¹ý¹ÜµÀÖØ¶¨Ïòµ½xargsÃüÁîºÍgrepÃüÁî,¿ÉÒÔÍê³É·Ç³£¸´ÔӵIJÙ×÷,Èç¹ûͬÑùµÄ ......
¶¯Ì¬¿âµÄÏÔʽµ÷ÓÃ
ÏÔʽµ÷Óõĺ¬ÒåÊÇ´úÂë³öÏÖ¿âÎļþÃû£¬Óû§ÐèÒª×Ô¼ºÈ¥
´ò¿ªºÍ¹ÜÀí¿âÎļþ¡£ÆäÒªµãΪ:
¢Å°Ñdlfcn.hϵͳͷÎļþ°üº¬½øÀ´
¢ÆÓÃdlopenº¯Êý´ò¿ª¿âÎļþ£¬²¢Ö¸¶¨´ò¿ª·½Ê½
dllopeµÄµÄµÚÒ»¸ö²ÎÊýΪ¹²Ïí¿âµÄÃû³Æ£¬½«»áÔÚÏÂÃæÎ»ÖòéÕÒÖ¸¶¨µÄ¹²Ïí¿â¡£
¢Ù»·¾³±äÁ¿LD_LIBRARY_PATHÁгöµÄÓ÷ֺżä¸ôµÄËùÓÐĿ¼¡£
¢ÚÎļþ/etc/ld.so.cacheÖÐÕÒµ½µÄ¿âµÄÁÐ±í£¬ÓÉldconfigÃüÁîˢС£
¢ÛĿ¼usr/lib¡£
¢ÜĿ¼/lib¡£
¢Ýµ±Ç°Ä¿Â¼¡£
µÚ¶þ¸ö²ÎÊýΪ´ò¿ª¹²Ïí¿âµÄ·½Ê½¡£ÓÐÁ½¸öȡֵ
¢ÙRTLD_NOW£º½«¹²Ïí¿âÖеÄËùÓк¯Êý¼ÓÔØµ½ÄÚ´æ
¢ÚRTLD_LAZY£º»áÍÆºó¹²Ïí¿âÖеĺ¯ÊýµÄ¼ÓÔØ²Ù×÷£¬Ö±µ½µ÷ÓÃdlsym()ʱ·½¼ÓÔØÄ³º¯Êý
¢ÇÓÃdlerror()º¯Êý²âÊÔÊÇ·ñ´ò¿ª³É¹¦£¬²¢½øÐдíÎó´¦Àí;
¢ÈÓÃdlsym»ñµÃº¯ÊýµØÖ·,´æ·ÅÔÚÒ»¸öº¯ÊýÖ¸ÕëÖÐ
¢ÉÓûñµÃµÄº¯ÊýÖ¸Õë½øÐк¯Êýµ÷Óá£
¢Ê³ÌÐò½áÊøÊ±ÓÃdlclose¹Ø±Õ´ò¿ªµÄ¶¯Ì¬¿â£¬·ÀÖ¹×ÊԴй¶¡£
¢ËÓÃldconfig¹¤¾ß°Ñ¶¯Ì¬¿âµÄ·¾¶¼Óµ½ÏµÍ³¿âÁбíÖÐ
1¡¢±àд²âÊÔÎļþ
//main.c ²âÊÔ¶¯Ì¬¿âÏÔʽµ÷ÓõijÌÐò
#include<dlfcn.h>&n ......