ӦƸµÄ¸Úλ£º¿ª·¢²âÊÔ¹¤³Ìʦ¡£Ê×ÏÈÏÈÃ÷È·Ò»µã£¬Õâ¸ö¸ÚλÌýÆðÀ´Ïñ¸ã²âÊԵģ¬µ«ÆäʵÖصãÔÚ¿ª·¢£¬Òò´Ë¶Ô¿ª·¢µÄÒªÇóÒ²ºÜ¸ß¡£ÒÔ±ÊÊÔΪÀý£¬ÊÔ¾íÌâÄ¿ºÍÆäËû¿ª·¢¸Úλ»ù±¾Ïàͬ£¬Ö»ÓÐÒ»Á½µÀ¼ò´ðÌâÔÚ¿¼²ìµÄ²àÖصãÉÏÓеãÇø±ð¡£ËùÒÔ£¬Ã»ÓÐÒ»¶¨µÄ±à³ÌÄÜÁ¦£¬²»ÒªÑ¡ÔñÕâ¸öְλ¡£ÎÒµ±Ê±±ÊÊÔÊǰԱʵģ¬ºÍÎÒÒ»ÅŲμӰԱʵÄͬѧ¼¸ºõ¶¼ÓÐÕâ¸öÎóÇø£¬½á¹û±ÊÊÔ¿ªÊ¼²»µ½Ê®Îå·ÖÖÓ£¬¾Í¶¼Æú¿¼×ßÈËÁË¡£
Ò»Ãæ
ÈýÃæÏÂÀ´£¬¾õµÃÒ»Ã濼µÄÊÇ×îÕë¶ÔÐԵġ£¹À¼ÆÕâÒ»³¡Ë¢ÈË×î¶à¡£ÃæÎҵĿ´µÃ³öÀ´ÊǸöºÜ×ÊÉîµÄ¹¤³Ìʦ¡£¸úÎÒ»áÃæºó£¬ÎÒÁ¢¼´ÏÈ°ÑÎҵļòÀúµÝ¸øËû¡£Ëû¾ÍºÜÈÏÕæµÄ¿´£¬Ë³±ãÎÊÎÒÊÇÄÄÀïµÄ¡£¹À¼ÆÊÇÔÚ¿¼ÂÇÎÒ¿ÉÄܵŤ×÷µØµã¡£ÎÒÃǼòµ¥ÁÄÁ˼¸¾ä£¬¾Íµ½ÁËÒ»¼ä»áÒéÊÒ¡£ÎÒ×øÔÚËûµÄÅԱߣ¬ÃæÇ°ÓÐÒ»ÕÅÖ½ºÍÒ»Ö§±Ê¡£
Ê×ÏÈÊÇ×ÔÎÒ½éÉÜ£¬×ÔÎÒ½éÉÜÊÇÒ»¸ö¸øÃæÊÔ¹Ù³õ´ÎÓ¡ÏóµÄ¾ø¼ÑºÃ»ú»á¡£½¨ÒéÀûÓÃÕâÈýÊ®Ãë×óÓÒµÄʱ¼ä½²Çå³þÒÔϼ¸¸öÎÊÌ⣺
1. Äã½ÐʲôÃû×Ö£»
2. ÄãÀ´×ÔÄĸöѧУ£¬Äĸöרҵ£¬×ö¹ýÄÄЩ·½ÃæµÄÑо¿£»
3. ÄãÉó¤Ê²Ã´£¬ÎªÊ²Ã´ÄãÑ¡ÔñÕâ¸öְλ¡£ÕâµãºÜÖØÒª£¬Ò»¶¨ÒªÔÚ×ÔÎÒ½éÉܵÄʱºò¾ÍÍ»³ö×Ô¼ºµÄÓÅÊÆ¡£
ÎÒµÄ×ÔÎÒ½éÉÜÄÚÈÝ£º
¡°ÎÒ½ÐXXX£¬ ÎÒ±¾¿ÆÔÚ»ªÄÏʦ·¶´óѧ¾Í¶Á£¬ºóÀ´±£Ñб¾Ð£¼ÌÐø¹¥¶Á˶ʿ¡£ÔÚÆÚ¼äÎÒÔÚÖйú¿ÆѧԺʵϰ¹ýÒ»ÄêµÄʱ¼ä£¬×öµÄÖ÷ÒªÊÇͼÐÎͼÏñ·½ÃæµÄÑо¿¡£ÎÒ×Ô¼º¾õµÃÎÒ¾ºÕùÕâ¸öְλµÄÓÅÊÆÔÚÓÚ£ºÎÒºÜϲ»¶ÕÛÌÚ£¬»¹ÓÐ͵ÀÁ¡£ÎÒºÜϲ»¶ÕÛÌÚһЩ±ðÈË¿´ÆðÀ´ºÜÆæÝâµÄ¹¤¾ß£¬Ò²ºÜϲ»¶Í¨¹ýдһЩ½Å±¾£¬ÈÃһЩ·±ËöµÄÊÂÇé×Ô¶¯»¯£¬ÈÃ×Ô¼ºÍµÀÁ¡£ÔÚƽ³£µÄ¿ª·¢ÖУ¬ÎÒÒ²ºÜϲ»¶TDDµÄ·½Ê½£¬ÕâÒ²ÊÇΪʲôÎҺܿÊÍûÀ´°Ù¶ÈÖÊÁ¿²¿¡£¡±
Ìýµ½¡°ÕÛÌÚ¡±ºÍ¡°ÍµÀÁ¡±Á½¸ö´ÊµÄʱºò£¬¿¼¹Ù×ì½ÇÑïÆðÁËһ˿ЦÒâ¡£Ö®ºóËû¾ÍÈÃÎÒ½éÉÜ×Ô¼ºµÄÏîÄ¿¾Ñé¡£ÏîÄ¿¾ÑéÒ»¶¨ÒªÊÂÏÈÈÏÕæ×¼±¸Ò»Ï£¬ÓÐЩÈËÏîÄ¿¾ÑéºÜ·á¸»£¬µ«ÊÇûÓÐÈÏÕæÈ¥»Ø¹Ëһϣ¬ºÜ¿ÉÄܾͻᱻÎʵ¹£¬¶Ô½ÓÏÂÀ´µÄÃæÊÔÔì³ÉºÜ´óÓ°Ïì¡£ÔڲμӰٶÈÃæÊÔµÄÇ°Íí£¬ÎҾͰÑ×Ô¼ºÁÐÔÚ¼òÀúÉϵÄÏîÄ¿ÖØÎÂÁËÒ»±é£¬ÉõÖÁ°Ñ×Ô¼ºÐ´¹ýµÄÒ»¸ö¼ÓÃÜËã·¨µÄ´úÂ붼±³ÁËÏÂÀ´¡£ÓÚÊÇ£¬ËûÎʵ½Õâ¸öÎÊÌâµÄʱºòÎҷdz£×ÔÐÅ£¬ÏȽ²ÁË×Ô¼º¶ÀÁ¢Íê³ÉµÄÒ»¸ö¿ªÔ´ÏîÄ¿£¬È»ºóÒ»¸ö¸ö½éÉÜ×Ô¼ºµÄ¿ÆÑоÑé¡£Éæ¼°µ½Ò»Ð©ÓÐȤµÄËã·¨£¬Óöµ½µÄÀ§ÄÑÎÒÒ²»áÓмò¶Ì¶øÉú¶¯µÄÓïÑÔ½²Ò»Ï£¬ÓÐʱËûÒ²»áÊÔͼÎÊһЩÈÃÎÒÒâÏë²»µ½µÄÎÊÌ⣬µ«ÊÇûÓаÑÎÒÄÑס¡£ÔÚ½²ÁË´ó¸ÅÈýËĸöÏîÄ¿ºó£¬ÕâÒ»¹ØËã¹ýÁË¡£
½ÓÏÂÀ´ÎÊÎÒ strcpy ºÍ memcpy µÄÇø±ð£¬Ö®Ç°ÎÒËäÈ»°ÑCµÄ±ê×¼¿â¶¼¹ýÁËÒ»±é£¬µ«»¹ÕæûÔõôÓùý memcpy£¬ÓÚÊÇÖ»ºÃ̹³Ï˵ÎÒÖ»ÖªµÀÇ°Õ߸ü¸ß²ã£¬µ«±È½ÏΣÏÕ£»ºóÕ߸üµ×²ã£¬Ëٶȸü¿ì¡£
Ö®ºóÒ»µÀËã·¨Ì⣺·´×ª×Ö·û´®¡£Ò»¿´ÌâÄ¿Õâô¼òµ¥£¬ÎÒ¾ÍÖªµÀ¿Ï¶¨ÊÇ×¢ÖØ¿¼²ìÎÒд³ÌÐòµÄ³°ôÐÔ¡£ËùÒÔÎÒÏȸúËû˵Ã÷ÁË˼·£ºÒ»¶¨ÒªÏȼì²é×Ö·û´®ÊÇ·ñΪ¿Õ£¬È»ºóµÚÒ»¸ö×Ö·û¸úµ¹ÊýµÚ¶þ¸ö×Ö·û½»»»£¨×îºóÒ»¸ö×Ö·ûÊÇ¡¯\0¡ä£©£¬µÚ¶þ¸ö¸úµ¹ÊýµÚÈý¸ö½»»»£¬´ÓÍ·±éÀúµ½×Ö·û´®³¤¶ÈµÄÒ»°ë¡£ÃæÊÔ¹ÙÒ»¿´Ë¼Â·¶ÔÍ·£¬¾ÍÈÃÎÒÓóÌÐòд³öÀ´¡£ÎҾͺÜСÐĵÄÍê³ÉÁ˳ÌÐò£¬Ð´½»»»º¯ÊýµÄʱºò»¹ÌØÒâд³ÉÁËÄÚÁªÄ£°åº¯Êý£¬È»ºóÓÃÒì»òµÄ·½Ê½Íê³ÉÊý¾Ý½»»»¡£Ë³±ã»¹¸úËû˵Èç¹ûÓÃpythonд£¬ÕâÒ»¸ö³ÌÐòÖ»ÐèÒªÒ»ÐУ¨ÓÃÇÐƬ£©¡£ÃæÊÔ¹Ù¿´ÁËһϳÌÐò£¬Ã»ÕÒµ½ÎÊÌ⣬¾ÍÈÃÎÒ·ÖÎöʱ¼ä¸´ÔӶȺÍËã·¨¸´ÔӶȣ¬ÎÒ˵ʱ¼ä¸´ÔÓ¶ÈÊÇ O(n)£¬µ«ÊǹæÄ£Ö»ÓÐÊý×鳤¶ÈµÄÒ»°ë¡£¿Õ¼ä¸´ÔÓ¶ÈÎÒ¾ÍŪ´íÁË£¬ÒÔΪ¶àÉÙÊý¾Ý¸´ÔӶȾͶà¸ß£¬ËùÒÔҲ˵ÊÇ O(n) £¬ÃæÊÔ¹Ù¾ÍÎÊÎÒÊDz»ÊDz»ÖªµÀʲôÊǿռ临ÔӶȡ£ÎÒ¾ÍÀÏʵ˵ÎÒû¹Ø×¢¹ý¿Õ¼ä¸´ÔӶȣ¬µ«ÎÒµÄËã·¨ÊÇԵصġ£È»ºóËû¾ÍûÓÐÔÙÎÊÁË¡£
½ÓÏÂÀ´ÎÊÎÒÄÚ´æ·ÖÅä»úÖÆ£¬Ç°ÍíÎҸպû¹ÖØιýÕâ·½ÃæµÄ֪ʶ£¬ÕýÖÐÏ»³¡£ÓÚÊÇÁ¢Âí»Í¼£¬°Ñ½ø³Ì¿Õ¼äµÄ·ÖÅäÏêϸ½éÉÜÁËһϣ¬Ë³±ãÌáÁËÏÂÕ»Ö¡¡¢º¯Êýµ÷Óá¢ÐéÄâÄÚ´æ¡¢PA¡¢VA¡¢mmap¡¢¹²Ïí¿âµÈ¸ÅÄî¡£¶ÔÕ»Ö¡µÄ½éÉÜÊÇÎÒ¹ÊÒⲼϵÄÏÝÚ壺ÎÒÌØÒâÌáÁËÒ»ÏÂgdbµÄ¡°frame¡±ÃüÁî¿ÉÒÔÔÚ²»Í¬º¯ÊýµÄÕ»Ö¡¼äÌøת¡£¹ûÈ»ÃæÊÔ¹Ù½ÓÏÂÀ´¾ÍÁ¢Âí¿¼ÎÒgdbµÄʹÓã¬ÈÃÎÒ½éÉÜÒ»ÏÂgdbÓÐÄÄЩÃüÁgdbµÄÃüÁîÎÒÒ²ÔÚÇ°ÍíÖØÎÂÁËÒ»±é£¬Á¢ÂíÁоÙÁËÊ®¼¸¸ö£¬»¹¼ÓÉÏÎÒµÄʹÓÃÐĵá£Ëû¾Í¼ÌÐøÎÊÎÒÖª²»ÖªµÀ gdb µÄ core Îļþ£¬ÎÒÒ»¿ªÊ¼Ìý³ÉÁË¡°call¡±£¬ã¶Á˼¸ÃëÖÓ£¬¾ÍÎÊËûÔõôƴ¡£Ëû˵ÊÇ¡°core¡±£¬ÎÒÁ¢ÂíÏëµ½ÁË¡°core dump¡±£¬¾Í¸úËû˵Linux C³ÌÐò·¢Éú¶Î´íÎóµÄʱºò»áÌáʾ¡°¶Îͺˡ±£¬Æäʵ¾ÍÊÇ¡°core dump¡±£¬Í¨³£²»»á²úÉúÎļþ£¬µ«ÓÃÒ»¸öÃüÁulimit£©¿ÉÒÔ¿ªÆôÊä³ö¶Î´íÎóµ½ core ÎļþµÄ¹¦ÄÜ£¬È»ºó gdb ¾Í¿ÉÒÔ¶ÁÈëËü½øÐе÷ÊÔ¡£ÎÒ»¹Ë³±ã¸úËûÙ©ÁËÒ»ÏÂÍøÓѹØÓÚ¡°¶Îͺˡ±Ó¦¸Ã·Òë³É¡°¶ÎͲۡ±µÄ°ËØÔ¡£
Ö®ºóËûÎÊÎÒÈçºÎ²âÊÔÒ»¸öµÇ½¿ò£¬ÓÚÊÇÎÒÏÈ´ÓÊäÈëÊä³öÊý¾ÝÈëÊÖ£¬²ÉÓð׺вâÊÔ·¨£¬ÏÈ»Á˸öÒò¹ûͼ£¬ÁоÙÁ˵¼Ö³ɹ¦ÐèÒªµÄÊý¾Ý£¬µ¼ÖÂʧ°ÜÐèÒªµÄÊý¾Ý¡£½â´ðµÄ¹ý³ÌÖÐÎÒ²»¶Ï¸úÃæÊÔ¹Ù±£³Ö½»Á÷£¬ÎÊËû¡°Õâ¸öµÇ½¿òÊÇweb°æµÄÂ𣿡±£¬¡°Õâ¸öµÇ½¿òÃæÏòÄÄЩÓû§£¿Ö»ÊÇÖйúÈË£¬»¹ÊÇËùÓеØÇø£¿¡±Ò»²½²½ÐÞÕý×Ô¼ºµÄ´ð°¸¡£±ÈÈ磬µ±Ëû˵ÊÇ web °æµÄʱºî£¬ÎÒ¾ÍÖªµÀ³ýÁ˲âÊý¾ÝÖ®Íâ¿Ï¶¨Òª²âÊÔÒ³Ãæ¼æÈÝÐÔ¡£µ±Ëû˵ÃæÏòËùÓеØÇøµÄʱºò£¬ÎÒ¾ÍÖªµÀÒ»¶¨Òª²âÊÔ²»Í¬ÓïÑÔµÄÃû×Ö£¬Ë³±ã¸úËûÙ©ÁËһЩ֮ǰ°¢À²®Îĵ¼ÖÂÆ»¹ûiosϵͳ̱»¾µÄ°ËØÔ¡£Íê³ÉÊý¾Ý²âÊÔºó£¬ËûÎÊÎÒ³ýÁ˲âÊÔÊý¾ÝÖ®Í⻹Ӧ¸Ã²âÊÔʲô£¬ÎҺܿì¾ÍÏëÁËѹÁ¦²âÊÔ£¨¸ºÔØÄÜÁ¦£©¡¢ä¯ÀÀÆ÷¼æÈÝÐÔ²âÊÔ¡¢ÃÀ¹Û¶È²âÊÔ£¨ÊÇ·ñʹÓúͰٶȷç¸ñÒ»ÖµÄÒ³ÃæÔªËØ£©¡¢ÓïÑÔ²âÊÔ£¨ÄÜ·ñΪ²»Í¬µØÇøµÄ·Ã¿ÍÌṩ²»Í¬ÓïÑÔµÄÒ³Ã棩µÈµÈÆ߰˸öÆäËûµÄ²âÊÔ¡£ÕâµÀÌâ˳Àûͨ¹ý¡£
½ÓÏÂÀ´¿¼ÎÒ shell ÃüÁÊ×ÏÈÎÊÎÒÔõô²é¿´Ò»¸ö½ø³ÌÕ¼ÓÃ×ÊÔ´µÄÇé¿ö¡£ÎÒÓà top ¼Ó grep ÃüÁîÃëɱ¡£ÎÊÎÒÔõôͳ¼ÆÓ²ÅÌÀïËùÓÐÎļþµÄ´óС£¬ÎÒ˵¿´¹ýÕâ¸öÃüÁµ«Ïë²»ÆðÀ´£¨dfÃüÁ£¬²»¹ýÎÒÖªµÀÕâ¸öÃüÁîµ×²ãÊÇ»ùÓÚ inode µÄ£¬ËùÒÔËٶȺܿ졣Ëû¾ÍÎÊÎÒ inode ÊÇʲô£¬ÎÒ´þµ½»ú»á£¬Á¢Âí¸øËû½éÉÜÁËÒ»·¬ ext2 ºÍ inode ¡£Ëû¾Í½øÒ»²½ÎÊÎÒ£¬¸øÒ»¸öĿ¼£¬Ôõô¼ÆËãÕâ¸öĿ¼ÀïËùÓÐÎļþµÄ´óС¡£ÎÒ¾ÍÁ¢ÂíдÁË awk ½Å±¾¸ã¶¨¡£
×îºó¿´ÎҵļòÀúÉÏ»¹Ð´ÊìϤ Valgrind£¬¾ÍÎÊÎÒ Valgrind µÄ֪ʶ¡£ÎÒ˳±ãÌá¼°ÎÒϲ»¶ÔÚ Makefile Àïµ÷ÓÃÒ»¸ö shell ½Å±¾£¬¸Ã½Å±¾ÓÃÓÚ²âÊÔËùÓеĵ¥Ôª²âÊÔÓÃÀý£¬²¢Ö´ÐÐÒ»´Î Valgrind ¼ì²âÄÚ´æй¶¡£Ò»¾ä»°¸ÅÀ¨ÎÒ¶Ô Makefile¡¢shell¡¢µ¥Ôª²âÊÔÒÔ¼° Valgrind µÄÊìϤ¶È¡£ËûºÜÂúÒ⣬¾Í¸úÎÒ˵ËûÕâ±ßûÎÊÌâÁË£¬Ó¦¸Ã»áºÜ¿ì֪ͨÎÒÏÂÒ»ÂÖ¡£ÎÒ¾ÍÁ¢Âí¸úËû˵ÎÒÊÇÌØÒâ´Ó¹ãÖݹýÀ´µÄ£¬ËùÒÔÄÜ·ñ°²ÅŵÄÔÙ½ô´ÕЩ¡£Ëû˵ûÎÊÌ⣬ÏÂÎç¾ÍÈÃÎÒ¶þÃæ¡£ÎÒÌýÁ˺ܿªÐÄ£¬À´Ö®Ç°ÎÒÌý˵°Ù¶ÈÃæÊÔÓиöDZ¹æÔò£¬·²ÊÇÒ»Ìì¶àÃæµÄ£¬¶¼ÊÇÓÐÏ£Íû½øµÄ¡£
¶þÃæ
ÖÐÎçÈ¥³ÔÁ˸ö·¹£¬µ½°Ù¶È¥ϵÄÐǰͿ˺ÈÁ˱¿§·È£¬¾ÍÊÕµ½ÁË֪ͨ¶þÃæµÄµç»°¡£Õâ´ÎÊÇÒ»¸öÅ®µÄ£¬ÎÒÐÄÀïÄǸö¼¤¶¯Ñ½¡£µ«»¹ÊÇҪСÐÄ£¬Ëµ²»¶¨ÊǸöÃð¾øʦ̫¡£¸úËý»áÃæºó£¬·¢ÏÖÕû¸ö¹ý³Ì»¹ÊǷdz£ÇáËɵģ¬Ã»¿¼Ëã·¨£¬¶¼ÔÚÁÄÏîÄ¿¾Ñ飬ÔÚÕâ¸ö¹ý³ÌÖдӲàÃæ·ÖÎöÎҵĿª·¢ÄÜÁ¦ºÍ½»Á÷ÄÜÁ¦¡£ÁíÍ⻹ÎÊÁËÎÒ¹¤×÷µØµãÒâÏò£¬ÄÜ·ñÑ¡Ôñ±±¾©¡£¿´µÃ³öÀ´±±¾©°Ù¶ÈÄDZ߱ȽÏȱÈË¡£ÎÒ˵ÎÒÅ®ÅóÓÑÔÚÉîÛÚ¶ÁÑУ¬ËùÒÔÑ¡ÔñÉîÛÚ¡£
Õâ¸ö¹ý³ÌÖÐÎÒÈÏΪÓÐÁ½¸öµØ·½ÐèҪעÒ⣺
Ò»¸öÊÇÎÊÎÒ֮ǰ¶¼Ó¦Æ¸¹ýÆäËû¹«Ë¾ÄÄЩְλ¡£Îһشð°¢ÀﱨµÄÊÇÊý¾ÝÍÚ¾ò£¬ÌÚѶ±¨Á˸öºǫ́¿ª·¢£¬ÆäËû¹«Ë¾Çåһɫ±¨ÁËC++¡£ÎÒÌý˵°Ù¶ÈÕâ±ßµÄ¿ª·¢²âÊÔÊÇÒÔ¿ª·¢ÎªÖ÷µÄ£¬ËùÒÔÎҲű¨ÁË¿ª·¢²âÊÔ¡£Ò»¶¨ÒªÔÚÃæÊÔ¹ý³ÌÖÐÇ¿µ÷×Ô¼ºµÄ¿ª·¢ÄÜÁ¦£¬ÒòΪ°Ù¶È¿ª·¢²âÊÔ×öµÄ»¹ÊÇ¿ª·¢£¡
µÚ¶þ¸öÊÇËýÎÊÍê»°ÈÃÎÒÎÊËýÎÊÌâ¡£°Ù¶ÈÈýÂÖÃæÊÔÖ»ÓÐÕâÒ»ÂÖ¸øÎÒ»ú»áÎÊÎÊÌ⣬¶øÎÒÊÂÏȾ;«ÐÄ×¼±¸ÁËÈý¸öÎÊÌâ¡£
¡°ÎÒÓÐ