9-2-´Ù. µð¹ö°Å

µð¹ö°Å(Debugger)¶õ ÇÁ·Î±×·¥ÀÌ ³í¸®ÀûÀ¸·Î À߸øµÇ¾î ÀǵµµÈ´ë·Î ½ÇÇàµÇÁö ¾ÊÀ» ¶§, Áï ¹ö±×°¡ ÀÖÀ» ¶§ ¿À·ù¸¦ ã¾Æ³»´Â ÅøÀÌ´Ù. ÇÁ·Î±×·¡¸Óµµ »ç¶÷ÀÌ´Ùº¸´Ï ½Ç¼ö¸¦ ÇÏ°Ô ¸¶·ÃÀ̹ǷΠÇÁ·Î±×·¥ °³¹ß °úÁ¤ÀÇ ´ëºÎºÐÀ» Â÷ÁöÇÏ´Â °ÍÀÌ ¹Ù·Î µð¹ö±ëÀÌ´Ù. µð¹ö°Å´Â ¼÷·ÃµÈ ÇÁ·Î±×·¡¸Ó°¡ ¿À·ù¸¦ ãÀ» ¶§µµ »ç¿ëÇÏÁö¸¸ óÀ½ ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ï ¶§ ¼Ò½º ºÐ¼®À» À§ÇÑ º¸Á¶Åø·Îµµ ¸¹ÀÌ »ç¿ëµÈ´Ù. API ÇÁ·Î±×·¡¹ÖÀ» óÀ½ ¹è¿ì´Â ¿©·¯ºÐµé¿¡°Ô µð¹ö°Å´Â ÁÁÀº ºÐ¼® ÅøÀÌ µÉ °ÍÀÌ´Ù.

ºñÁÖ¾ó C++Àº ÅëÇÕ °³¹ß ȯ°æ³»¿¡ µð¹ö°Å¸¦ ³»ÀåÇÏ°í Àֱ⠶§¹®¿¡ µð¹ö±ëÀ» À§ÇÑ º°µµÀÇ Áغñ¸¦ ÇÒ ÇÊ¿ä´Â ¾ø´Ù. µð¹ö±× ¸ðµå·Î ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÑ ÈÄ F5(Go)Å°¸¦ ´­·¯ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â¸¸ ÇÏ¸é µð¹ö±ëÀÌ ½ÃÀÛµÇ¸ç µð¹ö±ëÁß¿¡ °³¹ßÀÚ ½ºÆ©µð¿À´Â À©µµ¿ì¸¦ Àü¸é Àç¹èÄ¡ÇÏ°í Build ¸Þ´º¸¦ Debug ¸Þ´º·Î º¯°æÇÏ¿© ¹ú·¹ Àâ±â ż¼·Î µé¾î°¡°Ô µÈ´Ù.

µð¹ö°ÅÀÇ ±â´ÉÀº ´Ü°è ½ÇÇà°ú º¯¼ö°ª È®ÀÎ µÎ°¡Áö·Î ´ëÇ¥µÈ´Ù. ¼Ò½º Äڵ带 ÇÑÁÙ ÇÑÁÙ ½ÇÇàÇØ °¡¸é¼­ º¯¼ö°ªÀÌ ¾î¶»°Ô º¯ÇÏ´ÂÁö¸¦ °üÂûÇÏ´Ùº¸¸é ¾îµð°¡ À߸øµÇ¾ú´ÂÁö ½±°Ô ¹ß°ßÇÒ ¼ö ÀÖÀ¸¸ç ¶ÇÇÑ ½ÇÇàÁß¿¡ ÇÁ·Î±×·¥ÀÇ È帧ÀÌ ¾î¶»°Ô µÇ´Â°¡µµ »ìÆ캼 ¼ö ÀÖ°Ô µÈ´Ù. ¾î¶² ±â´ÉµéÀÌ ÀÖ´ÂÁö ¼ø¼­´ë·Î ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.

Run to Cursor

ÀÌ ±â´ÉÀº ÇöÀç ÆíÁýâ¿¡ Ä¿¼­°¡ ÀÖ´Â ºÎºÐ±îÁö ½ÇÇàÇÑ ÈÄ ÇÁ·Î±×·¥À» ¸ØÃßµµ·Ï ÇÑ´Ù. ¸ØÃ߱⸦ ¿øÇÏ´Â À§Ä¡¿¡ Ä¿¼­¸¦ µÎ°í Build/Start Debug/Run to Cursor Ç׸ñÀ» ¼±ÅÃÇϰųª ´ÜÃàÅ° Ctrl+F10À» ´©¸£¸é µÈ´Ù. Ä¿¼­ À§Ä¡¿¡¼­ ½ÇÇàÀ» ¸ØÃß°í °³¹ßȯ°æÀ¸·Î µ¹¾Æ¿À´Âµ¥ À̶§ ÆíÁýâ¿¡´Â ½ÇÇàÀ» ¸ØÃá ºÎºÐ¿¡ ³ë¶õ»öÀÇ È­»ìÇ¥°¡ ³ªÅ¸³­´Ù. ÀÏ´Ü µð¹ö±ëÀÌ ½ÃÀÛµÇ¸é °³¹ß ȯ°æ Àüü°¡ µð¹ö±ëÀ» À§ÇÑ Áغñ¸¦ Çϸç ÇÁ·Î±×·¥ÀÌ Áß´ÜµÈ »óÅ¿¡¼­´Â ¾ðÁ¦µçÁö º¯¼ö³ª ÇÁ·Î±×·¥ÀÇ »óŸ¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.

Step Over, Trace Into

ÀÌ µÎ ¸í·ÉÀº ÇöÀç ½ÇÇàÀ» ¸ØÃá ÁöÁ¡¿¡¼­ ÇÑÁÙ¾¿ ´Ü°è ½ÇÇàÀ» ÇÑ´Ù. ¹°·Ð ´Ü°è ½ÇÇàÁß¿¡ ÇÁ·Î±×·¥ÀÇ »óÅ´ ¾ðÁ¦µçÁö °üÂûÇÒ ¼ö ÀÖ´Ù. Step Over´Â ÇÔ¼ö È£Ãâ¹®À» ÇϳªÀÇ ¸í·ÉÀ¸·Î °£ÁÖÇÏ¿© Çѹø¿¡ ½ÇÇàÇÏÁö¸¸ Trace Into´Â ÇÔ¼ö ³»ºÎ±îÁö ÃßÀûÇØ µé¾î°£´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. °¡Àå ¼¼¹ÐÇÏ°Ô µð¹ö±ëÀ» ÇÒ ¶§ »ç¿ëÇÏ¸ç µÎ ±â´ÉÀÇ ´ÜÃàÅ°´Â °¢°¢ F10, F11ÀÌ´Ù.

Áß´ÜÁ¡ ¼³Á¤

Áß´ÜÁ¡(Breakpoint)¶õ ÇÁ·Î±×·¥ ½ÇÇàÀ» °­Á¦·Î ¸ØÃß°Ô ÇÒ ÁöÁ¡À» ¸»ÇÑ´Ù. ´Ü°è ½ÇÇàÀº ÇÁ·Î±×·¥ÀÇ µ¿ÀÛÀ» ¼¼¹ÐÇÏ°Ô °üÂûÇÒ ¼ö´Â ÀÖÁö¸¸ ƯÁ¤ºÎºÐ±îÁö ÃßÀûÇØ µé¾î°¡±â À§ÇØ ½Ã°£ÀÌ ³Ê¹« ¿À·¡ °É¸®´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀǽÉÀÌ °¡´Â ºÎºÐ¿¡ Áß´ÜÁ¡À» ¼³Á¤ÇØ µÎ°í ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°¸é Áß´ÜÁ¡¿¡ µµ´ÞÇßÀ» ¶§ ½ÇÇàÀ» ¸ØÃß°í µð¹ö±ë »óÅ·Πµ¹¾Æ¿À°Ô µÈ´Ù. Áß´ÜÁ¡À» ¼³Á¤ÇÏ°íÀÚ ÇÏ´Â °÷¿¡¼­ F9Å°¸¦ ´©¸£¸é Áß´ÜÁ¡ÀÌ ¼³Á¤µÇ¸ç Áß´ÜÁ¡À¸·Î ¼³Á¤µÈ ÇàÀÇ ¿ÞÂÊ¿¡´Â »¡°£»öÀÇ ¿øÀÌ ±×·ÁÁø´Ù.

Äü ¿ÍÄ¡

´Ü°è ½ÇÇàÁßÀ̰ųª Áß´ÜÁ¡¿¡¼­ ¸ØÃá »óÅ¿¡¼­´Â ¾ðÁ¦µçÁö º¯¼ö°ªÀ» »ìÆ캼 ¼ö ÀÖ´Ù. º¯¼ö°ªÀ» È®ÀÎÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº È®ÀÎÇØ º¸°íÀÚ ÇÏ´Â º¯¼ö¿¡ ¸¶¿ì½º Ä¿¼­¸¦ »ì¦ ¿Ã·Á ³õ´Â Äü ¿ÍÄ¡ ¹æ¹ýÀÌ´Ù. Á¶±×¸¸ Æ˾÷ À©µµ¿ì¸¦ ¿­¾î ÇØ´ç º¯¼öÀÇ ÇöÀç°ªÀ» º¸¿©ÁØ´Ù. ´ÙÀ½Àº Shtet3ÀÇ isfull ÇÔ¼ö¿¡ Áß´ÜÁ¡À» ¼³Á¤ÇÏ¿© ÇÁ·Î±×·¥À» ¸ØÃá ÈÄ Check º¯¼öÀÇ °ªÀ» Äü ¿ÍÄ¡·Î È®ÀÎÇØ º» °ÍÀÌ´Ù.

º¯¼ö°ªÀ» Á» ´õ »ó¼¼ÇÏ°Ô È®ÀÎÇØ º¸°í ½ÍÀ¸¸é Æ˾÷ ¸Þ´º¿¡¼­ Quick Watch Ç׸ñÀ» ¼±ÅÃÇÏ¸é µÈ´Ù. ÀÌ ´ëÈ­»óÀÚ¿¡¼­´Â ´Ü¼øÇÑ º¯¼ö°ª»Ó¸¸ ¾Æ´Ï¶ó ±¸Á¶Ã¼³ª ¹è¿­ µî µ¢Ä¡°¡ Å« º¯¼öÀÇ ¸â¹öµéµµ ÀÏÀÏÀÌ È®ÀÎÇØ º¼ ¼ö ÀÖÀ¸¸ç ½ÇÇàÁß¿¡ º¯¼ö°ªÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù.

¿ÍÄ¡ À©µµ¿ì

¿ÍÄ¡ À©µµ¿ì´Â µð¹ö±ëÁß¿¡ º¯¼öÀÇ °©ÀÌ ¾î¶»°Ô º¯ÇÏ´ÂÁö °¨½ÃÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â À©µµ¿ìÀÌ¸ç µð¹ö±ëÁß¿¡ ÀÚµ¿À¸·Î ¿­¸°´Ù. ¸¸¾à ÀÌ À©µµ¿ì°¡ ³ªÅ¸³ªÁö ¾ÊÀ¸¸é View/Debug Window/Watch Ç׸ñÀ» ¼±ÅÃÇÏ¸é ³ªÅ¸³¯ °ÍÀÌ´Ù. °¨½ÃÇÏ°íÀÚ ÇÏ´Â º¯¼ö¸¦ µå·¡±×ÇÏ¿© ¿ÍÄ¡ À©µµ¿ì¿¡ ¶³¾î¶ß·Á ³õÀ¸¸é ´Ü°è ½ÇÇàÁß¿¡ ÀÌ º¯¼ö°¡ ¾î¶»°Ô º¯ÇÏ´ÂÁö¸¦ Ç×»ó °¨½ÃÇÒ ¼ö ÀÖ´Ù.

º¯¼ö À©µµ¿ì

¿ÍÄ¡ À©µµ¿ì´Â »ç¿ëÀÚ°¡ µî·ÏÇÑ º¯¼öµéÀ» º¸¿©Áִµ¥ ºñÇØ º¯¼ö À©µµ¿ì´Â º°µµ·Î º¯¼ö¸¦ µî·ÏÇÏÁö ¾Ê¾Æµµ ÇöÀç ÇÔ¼ö¿¡¼­ »ç¿ëµÇ´Â ÇÔ¼öÀÇ Àμö, Áö¿ª º¯¼ö µîÀÇ ¸ðµç º¯¼ö¸¦ º¸¿©ÁØ´Ù. µð¹ö±ëÁß¿¡ ÀÚµ¿À¸·Î ¿­¸°´Ù.


¸ñ·Ï º¸±â  ´ÙÀ½ °­Á            written by http://www.winapi.co.kr