Linux×÷Ϊ¹ã·ºÓ¦ÓÃÓÚ·þÎñÆ÷¡¢Ç¶ÈëʽϵͳÒÔ¼°¸öÈ˵çÄԵĿªÔ´²Ù×÷ϵͳ£¬ÆäÇ¿´óµÄ¹¦ÄܺÍÁé»îÐÔÉîÊÜ¿ª·¢Õßϲ°®
È»¶ø£¬ÔÚÏíÊÜLinuxƽ̨´øÀ´µÄÖî¶àÓÅÊÆÊ±£¬³ÌÐòµ÷ÊÔ³ÉΪÁËÿλ¿ª·¢Õß±ØÐëÃæ¶ÔµÄÌôÕ½
±¾ÎĽ«ÉîÈë̽ÌÖLinux³ÌÐòdebugÐÅÏ¢µÄÖØÒªÐÔ¡¢»ñÈ¡·½·¨¡¢·ÖÎö¼¼ÇÉÒÔ¼°ÈçºÎÀûÓÃÕâЩÐÅϢʵÏÖ¾«×¼¶¨Î»Óë¸ßЧ½â¾öÎÊÌ⣬°ïÖú¿ª·¢ÕßÔÚ´í×Û¸´ÔӵĴúÂëÊÀ½çÖÐÓÎÈÐÓÐÓà
Ò»¡¢Linux³ÌÐòDebugÐÅÏ¢µÄ¼ÛÖµ ÔÚÈí¼þ¿ª·¢ÖÜÆÚÖУ¬bugÈçͬÒþ²ØÔÚ´úÂëÉÁÖÖеÄÏÝÚ壬ÉÔÓв»É÷±ã¿ÉÄÜÒý·¢³ÌÐò±ÀÀ£¡¢Êý¾Ý¶ªÊ§ÉõÖÁϵͳ̱»¾
Linux³ÌÐòdebugÐÅÏ¢£¬¾ÍÏñÊÇÕÕÁÁÕâЩÏÝÚåµÄµÆËþ£¬Îª¿ª·¢ÕßÌṩÁ˶¨Î»ºÍ½â¾öbugµÄ¹Ø¼üÏßË÷
¾ßÌå¶øÑÔ£¬debugÐÅÏ¢¾ßÓÐÒÔϺËÐļÛÖµ£º 1.¾«×¼¶¨Î»£ºÍ¨¹ýdebugÐÅÏ¢£¬¿ª·¢Õß¿ÉÒÔѸËÙËø¶¨ÎÊÌâ·¢ÉúµÄ¾ßÌåλÖã¬ÎÞÂÛÊǺ¯Êýµ÷ÓᢱäÁ¿¸³Öµ»¹ÊÇÄÚ´æ·ÃÎÊ´íÎ󣬶¼Äܵõ½Ã÷È·µÄָʾ
2.ÔÒò·ÖÎö£º½áºÏ´úÂëÉÏÏÂÎĺÍdebugÐÅÏ¢£¬¿ª·¢Õß¿ÉÒÔÉîÈë·ÖÎöbug²úÉúµÄÔÒò£¬ÊÇÂß¼´íÎó¡¢×ÊԴй©»¹ÊDz¢·¢³åÍ»£¬´Ó¶ø¶ÔÖ¢ÏÂÒ©
3.ÐÔÄÜÓÅ»¯£ºdebugÐÅÏ¢»¹ÄܰïÖúʶ±ð³ÌÐòÖеÄÐÔÄÜÆ¿¾±£¬Èç²»±ØÒªµÄ¼ÆË㡢Ƶ·±µÄI/O²Ù×÷µÈ£¬ÎªÐÔÄܵ÷ÓÅÌṩÊý¾ÝÖ§³Ö
4.¿É¿¿ÐÔÔöÇ¿£ºÍ¨¹ý¶ÔdebugÐÅÏ¢µÄ³ÖÐø·ÖÎöºÍ´¦Àí£¬¿ª·¢ÕßÄܹ»²»¶ÏÌáÉý³ÌÐòµÄ½¡×³ÐÔºÍÎȶ¨ÐÔ£¬¼õÉÙÉú²ú»·¾³ÖеĹÊÕÏÂÊ
¶þ¡¢»ñÈ¡Linux³ÌÐòDebugÐÅÏ¢µÄ·½·¨ ÒªÓÐЧÀûÓÃLinux³ÌÐòdebugÐÅÏ¢£¬Ê×ÏÈÐèÒªÕÆÎÕÕýÈ·µÄ»ñÈ¡·½·¨
ÒÔÏÂÊǼ¸ÖÖ³£¼ûÇÒÓÐЧµÄ;¾¶£º 1.±àÒëʱÌí¼Óµ÷ÊÔ·ûºÅ£ºÔÚ±àÒë³ÌÐòʱ£¬Ê¹ÓÃ-gÑ¡ÏÈç`gcc -g`£©¿ÉÒÔÉú³É°üº¬µ÷ÊÔÐÅÏ¢µÄ¿ÉÖ´ÐÐÎļþ
ÕâЩÐÅÏ¢¶ÔÓÚºóÐøÊ¹ÓÃgdbµÈµ÷ÊÔÆ÷ÖÁ¹ØÖØÒª
2.ʹÓõ÷ÊÔÆ÷£¨Èçgdb£©£ºGNU Debugger£¨gdb£©ÊÇLinuxÏÂ×î³£Óõĵ÷ÊÔ¹¤¾ßÖ®Ò»
Ëü²»½ö¿ÉÒÔÔËÐгÌÐò¡¢ÉèÖöϵ㡢µ¥²½Ö´ÐУ¬»¹Äܲ鿴±äÁ¿Öµ¡¢µ÷ÓÃÕ»µÈÐÅÏ¢£¬ÊÇ·ÖÎödebugÐÅÏ¢µÄµÃÁ¦ÖúÊÖ
3.ÈÕÖ¾¼Ç¼£ºÔÚ´úÂëÖкÏÀíÌí¼ÓÈÕÖ¾Óï¾ä£¬¿ÉÒԼǼ³ÌÐòµÄÔËÐÐ״̬¡¢¹Ø¼ü±äÁ¿ÖµÒÔ¼°Ò쳣ʼþ
ËäÈ»Õâ²»ÊÇÖ±½ÓµÄdebugÐÅÏ¢£¬µ«Á¼ºÃµÄÈÕÖ¾Éè¼ÆÄܼ«´óµØ¸¨ÖúÎÊÌâÕï¶Ï
4.ºËÐÄת´¢£¨Core Dump£©£ºµ±³ÌÐò±ÀÀ£Ê±£¬Linux²Ù×÷ϵͳ¿ÉÒÔÉú³ÉÒ»¸öºËÐÄת´¢Îļþ£¬ÆäÖаüº¬³ÌÐò±ÀÀ£Ê±µÄÄÚ´æ¿ìÕÕ
ͨ¹ýgdb·ÖÎö¸ÃÎļþ£¬¿ÉÒÔ»ñÈ¡³ÌÐò±ÀÀ£Ê±µÄÏêϸ״̬
5.ÐÔÄÜ·ÖÎö¹¤¾ß£ºÈçgprof¡¢perfµÈ£¬ÕâЩ¹¤¾ßÄܰïÖú¿ª·¢Õßʶ±ð³ÌÐòÖеÄÐÔÄÜÎÊÌ⣬ËäÈ»ËüÃDzúÉúµÄ²»ÊÇ´«Í³ÒâÒåÉϵÄdebugÐÅÏ¢£¬µ«¶ÔÓÚÓÅ»¯³ÌÐòÐÔÄÜͬÑùÖØÒª
Èý¡¢·ÖÎöLinux³ÌÐòDebugÐÅÏ¢µÄ¼¼ÇÉ »ñÈ¡debugÐÅÏ¢Ö»ÊǵÚÒ»²½£¬ÈçºÎ¸ßЧ·ÖÎö²¢×ª»¯Îª½â¾öÎÊÌâµÄʵ¼ÊÐж¯£¬²ÅÊÇÕæÕýµÄÌôÕ½
ÒÔÏÂÊÇһЩʵÓõķÖÎö¼¼ÇÉ£º 1.Àí½âµ÷ÓÃÕ»£ºµ÷ÓÃջչʾÁ˳ÌÐò±ÀÀ£»òÖ´Ðе½Ä³¸ö¶Ïµãʱ£¬º¯Êýµ÷ÓõÄ˳Ðò
ͨ¹ý·ÖÎöµ÷ÓÃÕ»£¬¿ÉÒÔ¿ìËÙ¶¨Î»µ½ÎÊÌâ·¢ÉúµÄº¯Êý²ã´Î
2.±äÁ¿×·×Ù£º¹Ø×¢¹Ø¼ü±äÁ¿µÄÖµ±ä»¯£¬ÌرðÊÇÔÚ³ö´íǰºóµÄ±ä»¯
ʹÓÃgdbµÄ`print`ÃüÁî»òÉèÖüàÊӵ㣨watchpoint£©£¬¿ÉÒÔʵʱ¸ú×Ù±äÁ¿µÄ״̬
3.ÄÚ´æ¼ì²é£ºÀûÓù¤¾ßÈçValgrind¼ì²éÄÚ´æ¹ÜÀíÎÊÌ⣬ÈçÄÚ´æÐ¹Â©¡¢·Ç·¨·ÃÎʵÈ
Valgrind²»½öÄܼì²âµ½ÕâЩÎÊÌ⣬»¹ÄÜÌṩÏêϸµÄ´íÎ󱨸æºÍ¶ÑÕ»»ØËÝ
4.Ìõ¼þ¶Ïµã£ºÉèÖÃÌõ¼þ¶Ïµã¿ÉÒÔÈóÌÐòÔÚÂú×ãÌØ¶¨Ìõ¼þʱ²ÅÔÝÍ£Ö´ÐУ¬Õâ¶ÔÓÚ´¦Àí¸´ÔÓÂß¼»òº±¼ûÇé¿ö·Ç³£ÓÐÓÃ
5.´úÂëÉó²éÓëÖØ¹¹£º½áºÏdebugÐÅÏ¢·¢ÏÖµÄÎÊÌ⣬½øÐдúÂëÉó²é£¬Ê¶±ðDZÔÚµÄÉè¼ÆÈ±ÏÝ»ò±àÂë²»¹æ·¶Ö®´¦£¬²¢ÊÊʱ½øÐÐÖØ¹¹£¬´Ó¸ù±¾ÉÏÌáÉý´úÂëÖÊÁ¿
6.ÉçÇøÓëÎĵµ£ºÓöµ½ÄÑÒÔ½â¾öµÄÎÊÌâʱ£¬²»·Á²éÔĹٷ½Îĵµ¡¢ËÑË÷Ïà¹ØÂÛ̳»òÏòÉçÇøÇóÖú
Linux¼°Æä¿ª·¢¹¤¾ßÓµÓÐÅÓ´óµÄÓû§»ù´¡£¬Ðí¶à³£¼ûÎÊÌâÒÑÓгÉÊìµÄ½â¾ö·½°¸
ËÄ¡¢Êµ¼ù°¸Àý£º´ÓdebugÐÅÏ¢µ½ÎÊÌâ½â¾ö ¼ÙÉèÒ»¸öCÓïÑÔ±àдµÄLinux·þÎñ³ÌÐòÔÚÔËÐÐÒ»¶Îʱ¼äºóƵ·±±ÀÀ££¬Í¨¹ýÒÔϲ½Ö裬ÎÒÃÇչʾÁËÈçºÎÀûÓÃdebugÐÅÏ¢½øÐÐÎÊÌâÕï¶ÏºÍ½â¾ö£º 1.ÊÕ¼¯ÐÅÏ¢£ºÊ×ÏÈ£¬È·±£³ÌÐòÒÔµ÷ÊÔģʽ±àÒ루ʹÓÃ-g£©£¬²¢ÆôÓúËÐÄת´¢£¨Í¨¹ý`ulimit -c unlimited`£©
³ÌÐò±ÀÀ£ºó£¬»ñµÃºËÐÄת´¢Îļþ
2.³õ²½·ÖÎö£ºÊ¹ÓÃgdb¼ÓÔØºËÐÄת´¢Îļþ£¬²é¿´±ÀÀ£Ê±µÄµ÷ÓÃÕ»
·¢ÏÖ±ÀÀ£·¢ÉúÔÚ´¦ÀíÍøÂçͨÐŵĺ¯ÊýÖУ¬ÌرðÊÇ´¦Àíij¸öÌØ¶¨ÐÒéµÄ²¿·Ö
3.ÉîÈëµ÷²é£ºÔڸú¯ÊýÖÜΧÉèÖÃ¶Ïµã£¬ÖØÐÂÔËÐгÌÐò²¢Öð²½Ö´ÐУ¬¹Û²ì±äÁ¿±ä»¯
·¢ÏÖµ±½ÓÊÕµ½µÄÊý¾Ý°ü³¤¶È³¬¹ýÔ¤ÆÚʱ£¬³ÌÐòÊÔͼ·ÃÎÊÔ½½çµÄÄÚ´æÇøÓò
4.ÐÞ¸´ÎÊÌ⣺Ôö¼Ó¶ÔÊý¾Ý°ü³¤¶ÈµÄ¼ì²é£¬È·±£ÔÚ½âÎöǰÊý¾Ý°ü´óСºÏ·¨
ͬʱ£¬ÓÅ»¯´íÎó´¦ÀíÂß¼£¬µ±Óöµ½·Ç·¨Êý¾Ý°üʱ£¬¼Ç¼ÈÕÖ¾²¢°²È«µØ¶ªÆú£¬±ÜÃâ³ÌÐò±ÀÀ£
5.ÑéÖ¤Óë²âÊÔ£ºÐ޸ĺó£¬ÖØÐ±àÒë³ÌÐò²¢½øÐгä·Ö²âÊÔ£¬°üÀ¨µ¥Ôª²âÊÔ¡¢¼¯³É²âÊÔÒÔ¼°Ñ¹Á¦²âÊÔ£¬È·±£ÎÊÌâÒѳ¹µ×½â¾öÇÒδÒýÈëеÄbug
Îå¡¢½áÓï Linux³ÌÐòdebugÐÅÏ¢ÊÇ¿ª·¢ÕßÊÖÖеı¦¹ó×ÊÔ´£¬Ëü²»½öÄܹ»°ïÖú¿ìËÙ¶¨Î»ºÍ½â¾ö³ÌÐòÖеÄÎÊÌ⣬»¹ÄÜ´Ù½ø´úÂëÖÊÁ¿µÄ³ÖÐøÌáÉý
ͨ¹ýÕÆÎÕÕýÈ·µÄ»ñÈ¡·½·¨¡¢Áé»îÔËÓ÷ÖÎö¼¼ÇÉ£¬²¢½áºÏʵ¼ù°¸Àý²»¶Ï»ýÀÛ¾Ñ飬ÿλ¿ª·¢Õß¶¼ÄܳÉΪ½â¾ö¸´ÔÓÎÊÌâµÄר¼Ò
ÔÚÕâ¸ö¹ý³ÌÖУ¬±£³ÖºÃÆæÐÄ¡¢ÄÍÐÄÒÔ¼°³ÖÐøÑ§Ï°µÄ̬¶È£¬½«ÊÇͨÍù¸ü¸ß²ã´Î¼¼ÄܵĹؼü
¼Çס£¬Ã¿Ò»´Î³É¹¦µÄdebug£¬¶¼ÊǶԼ¼ÊõÀí½âµÄÒ»´ÎÉ£¬ÊǶÔÈí¼þÖÊÁ¿µÄÒ»´ÎÌáÉý