http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1886 [º¹»ç]
¾È³çÇϼ¼¿ä. HeuristiC ÀÔ´Ï´Ù.
¿ì¿¬Âú°Ô ÀڷḦ ã´ø Áß ÁÁÀº »çÀÌÆ®¸¦ ¹ß°ßÇÏ°Ô µÇ¾î ±â»Þ´Ï´Ù.
ÀÏÁÖÀÏ¿¡ Çϳª¾¿ GDB °Á¸¦ ¿Ã¸± ¿¹Á¤ÀÔ´Ï´Ù¸¸, ÇÐÀ§³í¹®°ú Ãë¾÷ ¹× ÇÁ·ÎÁ§Æ®ÀÇ ¾Ð¹ÚÀ¸·Î Àß Áöų¼ö ÀÖÀ»Áö´Â Àǹ®ÀÔ´Ï´Ù.
ºÎÁ·ÇÑ Á¡À̳ª Ʋ¸° Á¡ÀÌ ÀÖÀ» °æ¿ì, ¶Ç´Â Á» ´õ ÁÁÀº ¹æ¹ýÀÌ ÀÖÀ» °æ¿ì¿¡´Â ÁöÀû ¹Ù¶ø´Ï´Ù.
°Á´ GDB 7.3À» ±âÁØÀ¸·Î ÁøÇà µÉ ¿¹Á¤ÀÔ´Ï´Ù.
http://www.gnu.org/s/gdb/download/
¿¡¼ ¹ÞÀ¸½Ã¸é µÇ°Ú½À´Ï´Ù.
Debugging with gdb
The gnu Source-Level Debugger
Tenth Edition, for gdb version 7.3.50.20110915
Richard Stallman, Roland Pesch, Stan Shebs, et al.
1. GDB¶õ
¸®Â÷µå ½ºÅ縸 ¾ÆÀú¾¾ÀÇ ³ëÆ®ºÏ À§¿¡ ÀÖ´Â ÇØÇÇÇØÅ·Àº ¾ðÁ¦³ª ´«ºÎ½Ê´Ï´Ù. °³ÀÎÀûÀ¸·Î´Â Poker X ÈæÃàÀ» ´õ ÁÁ¾ÆÇÏ´Â °ü°è·Î ±×·¸°Ô »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù¸¸, ½ºÅ縸 ¾ÆÀú¾¾´Â Á¤¸» ¸ÚÁý´Ï´Ù.
¹°·Ð ½ºÅ縸 ¾ÆÀú¾¾°¡ emacs¿Í GDB¸¦ ¸¸µé¾úÀ¸´Ï, GDBÀÇ »ç¿ëÀº emacs¿¡¼ Á»´õ º¸±â ÆíÇÕ´Ï´Ù¸¸, °³ÀÎÀûÀ¸·Î´Â ±×³É ssh°¡ ÁÁ´õ±º¿ä. ¸®´ª½º´Â ÄܼÖÀÌ´Ù¶ó´Â »ý°¢ÀÌ ±íÈ÷ ¹ÚÇô ÀÖ¾î¼ ÀÎÁö emacs´Â º°·Î ÁÁ¾ÆÇÏÁö ¾Ê½À´Ï´Ù.
»ç¼³Àº ¿©±â±îÁö Çϱâ·Î ÇÏ°í, GDB´Â µð¹ö±ë ÅøÀÔ´Ï´Ù. ±×·¡ÇÈÄÃÇÑ È¯°æ¿¡¼ DDD(Data Display Debugger) µîÀÌ ÀÖ±ä ÇÏÁö¸¸, script¸¦ ÁÁ¾ÆÇÏ´Â Àú·Î½á´Â gdb°¡ ´õ¿í ¸Å·ÂÀûÀ¸·Î º¸ÀÔ´Ï´Ù.
GDB·Î ¹«¾ùÀ» ÇÒ ¼ö ÀÖÀ»±î¿ä ? ÇÁ·Î±×·¥À» ¿À·ù¸¦ ÆÇ´ÜÇس¾ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ÀÇ ¿À·ù´Â Å©°Ô syntax error¿Í semantic error·Î ºÐ·ùÇÒ ¼ö ÀÖ½À´Ï´Ù. syntax errorÀÇ °æ¿ì´Â ÄÄÆÄÀÏ ÀÚü°¡ µÇÁö ¾Ê°í gcc°¡ ¾îµð¿¡ ¹®Á¦°¡ ¹ß»ýÇß´ÂÁö ´Ù ¾Ë·Á Áֱ⠶§¹®¿¡, ½±°Ô ÇØ°á ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®Á¦´Â ³í¸®ÀûÀÎ ¿À·ù°¡ ¹ß»ýÇßÀ» °æ¿ì ÀÔ´Ï´Ù. ÀÌ°ÍÀ» semantic error¶ó°í ÇÏ°í, ¹®Á¦Á¡À» ÃßÀûÇϱâ À§ÇØ GDB¸¦ Æ÷ÇÔÇÑ debugger°¡ Á¸ÀçÇÕ´Ï´Ù. GDB´Â ´ëÇ¥ÀûÀ¸·Î breakpoint, watchpoint, tracepoint µîÀ» ¿À·ù¸¦ ÃßÀûÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î½á Á¦°øÇÕ´Ï´Ù. stack frame, local variables, registers, µî ±âŸ ¿©·¯°¡Áö¸¦ °£ÆíÇÏ°Ô ÆľÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
»ç½Ç À©µµ¿ì ȯ°æ¿¡¼ °£´ÜÇÑ C¸¦ ÀÛ¼ºÇØ º¸½Å ºÐÀ̶ó¸é ¾ó¸¶³ª ½±°Ô µð¹ö±ëÀ» ÇÒ ¼ö ÀÖ´ÂÁö ¾Æ½Ç °Ì´Ï´Ù. visual studioÀÇ °£ÆíÇÑ µð¹ö±ë ȯ°æ°ú ºñ±³ÇÏ¿© »ó´ëÀûÀ¸·Î GDB´Â GUI ȯ°æÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ÁøÀÔÀ庮ÀÌ ¾à°£Àº ÀÖ½À´Ï´Ù. ±×·¯³ª, GDB´Â °·ÂÇÑ ½ºÅ©¸³Æ®¸¦ Á¦°øÇÕ´Ï´Ù.
Logging, Breakpoint Command List, User Defined Command List, Non-Stop Mode µîÀ» Áö¿øÇÏ°í, Çѹø ¸¸µé¾î ³í break, watch ¹× trace±îÁö ÆÄÀÏ·Î ÀúÀåÇÏ´Â ±â´É, ´Ù½Ã ½ÃÀÛÇÒ ¶§ reloadÇÏ´Â ±â´É±îÁö ÀÖ½À´Ï´Ù.
ÀÚ½ÅÀÌ ¸¸µé¾î ³í ´Ù¾çÇÑ ½ºÅ©¸³Æ®¸¦ GDB ½ÇÇà½Ã ¶Ç´Â ƯÁ¤ ÇÁ·Î±×·¥ ½ÇÇà½Ã¿¡ ¿É¼ÇÀ» ¹Ù²ã¼ ÀÚµ¿À¸·Î »ðÀԵǵµ·Ï ÇÏ´Â ±â´ÉÀº ¹°·Ð, µ¿ÀÛÁßÀÎ ÇÁ·Î¼¼½º¸¦ Àâ¾Æ¼ (attach) µð¹ö±ëÀÌ °¡´ÉÇÕ´Ï´Ù.
³í¸®ÀûÀÎ ¿À·ù´Â segmentation fault¿Í °°ÀÌ ´Ü¼øÇÏ°Ô Àâ¾Æ ³¾ ¼ö ÀÖ´Â ¿À·ù¸¦ Æ÷ÇÔÇÏ¿©, ƯÁ¤ºÎºÐ¿¡¼ ¿À·ù°¡ ¹ß»ýÇÏ°í ¼ö¹é¸¸ instructionÀÌ ½ÇÇà µÈ ÈÄ ÀüÇô °ü°è¾ø¾î º¸ÀÌ´Â ºÎºÐ¿¡¼ ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. Àü¹ÝÀÇ °æ¿ì´Â ÃʽÉÀÚµµ ¸îºÐÀ̸é ã¾Æ³»Áö¸¸, ÈÄÀÚÀÇ °æ¿ì´Â Àü¹®°¡¶óµµ ½Ã°£À» Àå´ãÇÏÁö ¸øÇÕ´Ï´Ù.
GDBÀÇ ¸Å·ÂÀº ÈÄÀÚÀÇ °æ¿ì¸¦ traceÇϴµ¥ Æí¸®ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ÇÑ ÇÔ¼öÀÇ Æ¯Á¤ ÀÎÀÚ°¡ ¹®Á¦°¡ ÀÖÀ» ¼ö ÀÖ´Ù°í ÆǴܵǸé, ¿©·¯ ±â¹ýÀ» È¥ÇÕÇÏ¿© ½ºÅ©¸³Æ®¸¦ »ý¼ºÇÏ°í, ÇÁ·Î±×·¥ ½ÇÇà½Ã ºÎÅÍ Á¾·á±îÁö Ÿ°ÙÀÇ »óŸ¦ ÆÄÀÏ·Î ÀúÀåÇØ ³¾ ¼ö ÀÖ½À´Ï´Ù. gnuplot °ú °°Àº ±×·¡ÇÁ »ý¼º Åø µîÀ» ÀÌ¿ëÇϸé ÇÑ´«¿¡ ¾î¶»°Ô º¯È°¡ »ý±â´ÂÁö ÆľÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ °ÁºÎÅÍ´Â ±âº»ÀûÀÎ ºÎºÐ (?)Àº ¾î´À Á¤µµ »ý·«ÇÏ°í, ½ºÅ©¸³Æ® À§ÁÖ·Î °Á¸¦ ÁøÇà Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù.
|
Hit : 10052 Date : 2011/10/26 01:35
|