Jose M. Laveda ÇÊÀÚ¿¡°Ô ¿¬¶ôÇϱ⠵é¾î °¡´Â ¸» µð¹ö°Å¶õ ¹«¾ùÀΰ¡? DDD¶õ ¹«¾ùÀΰ¡? DDDÀÇ ±×·¡ÇÈ È¯°æ °¡Àå ¹Ø¿¡ Àִ â ºÎÅÍ ½ÃÀÛÇÏÀÚ. ÀϹÝÀûÀÎ µð¹ö±ë ¸¶Ä¡´Â ±Û |
DDD¸¦ ÀÌ¿ëÇÑ µð¹ö±ë
¿ä¾à: ddd´Â ȯ»óÀûÀÎ ±×·¡ÇÈȯ°æÀÇ µð¹ö°ÅÀÔ´Ï´Ù. ÀÌ ±Û¿¡¼ ±Û¾´ÀÌ´Â dddÀÇ ±âº»±â´Éµé¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. µé¾î°¡´Â ±ÛÀÌ ±Û¿¡¼´Â µð¹ö°Å¸¦ »ç¿ëÇØ º¸Áö ¸øÇÑ »ç¶÷À» À§Çؼ µð¹ö°Å¶õ ¹«¾ùÀÎÁö, µð¹ö°ÅÀÇ °³³ä¿¡ ´ëÇؼ ¼³¸íÇÏ°í, ¶Ç »ç¿ëÇϱ⠽¬¿î GUI ȯ°æÀÇ µð¹ö°Å- DDD¸¦ ¼Ò°³ÇÑ´Ù. gdb¿Í °°Àº ÈǸ¢ÇÑ µð¹ö°Åµµ ÀÖÀ¸³ª, ÀÌ ±ÛÀ» ±³À°ÀûÀÎ ¸ñÀûÀ¸·Î ¾²¿´À¸¹Ç·Î, °£´ÜÇÑ µð¹ö°Å¸¦ °ñ¶ú´Ù.
µð¹ö°Å¶õ ¹«¾ùÀΰ¡?"¿¾³¯¿¡ ÇÑ ÇÁ·Î±×·¡¸Ó°¡ »ì¾Ò´Âµ¥ ¹ö±×¸¦ ÀâÀ» ¶§¸é ¾ðÁ¦³ª ´ÙÀ½°ú °°Àº code¸¦ »ðÀÔÇÏ¿´´Ù.
/*Code*/ ±×´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ º¯¼ö°¡ ¾î¶² °ªÀ» °®´ÂÁö ¾Ë¾Æ³»±â À§ÇÏ¿© ¾ðÁ¦³ª À§¿Í °°Àº Äڵ带 ¿©·¯±ºµ¥ »ðÀÔÇØ¾ß Çß´Ù. ÀÌ´Â ¸Å¿ì ¾î·Á¿î ÀÛ¾÷À̾ú°í, ¼Ò½º Äڵ带 ÀÛ¼ºÇÏ´Â ½Ã°£º¸´Ù, ¹ö±×¸¦ Àâ´Â ½Ã°£ÀÌ µÎ¹è³ª ´õ °É·È´Ù. " ´©±¸³ª À§¿Í °°Àº °æ¿ì¸¦ ÇѹøÂëÀº °Þ¾îºÃÀ» °ÍÀÌ´Ù. º¸Åë ÇÁ·Î±×·¥¿¡´Â ¹ö±×°¡ Àֱ⠸¶·ÃÀε¥, ÀÌ·± °æ¿ì º¸Åë ¼Ò½º ÄÚµåÀÇ ÀÌ°÷Àú°÷À» ¹Ù²ãº¸´Ù°¡ ±×·¡µµ ¾ÈµÇ¸é , " ÄÄÆÄÀÏ·¯¿¡ ¹®Á¦°¡ ÀÖ³ª º¸Áö?" ÇÏ°í´Â ³Ñ¾î°¡°í ¸¸´Ù. ÀÌ ¶§ ¹ö±×¸¦ ½±°Ô ã°Ô ÇØÁÖ´Â µð¹ö°Å¸¦ ÀÌ¿ëÇغ¸ÀÚ. µð¹ö°Å´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇÏ°í, ÀÌ·± ½ÄÀ¸·Î ¿ì¸®´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡, º¯¼öÀÇ °ªÀÌ ¾ó¸¶ÀÎÁö, º¯¼öÀÇ ¼±¾ðÀº ¾î¶»°Ô µÇ¾ú´ÂÁö, ƯÁ¤ÇÑ Á¶°Ç¿¡¼ ¾î¶² ÀÏÀÌ ¹ß»ýÇÏ´ÂÁö µîµî ¸ðµç °ÍÀ» Á¶»çÇÒ ¼ö ÀÖ´Ù. À§ÀÇ ¼³¸íÀÌ Á¶±Ý ºÎÁ·ÇÏ´Ù¸é °è¼Ó ±ÛÀ» ÀÐ¾î °¡¸é¼ ÀÌÇظ¦ Çϵµ·Ï ÇÏÀÚ. À§ÀÇ À̾߱âÀÇ ÁÖÀΰøÀÌ "spy"¶ó´Â µð¹ö°Å¸¦ ÀÌ¿ëÇÏ¸é ¾î¶²Áö º¸ÀÚ. jose# spy my_program À§Ã³·³ "spy"¸¦ ½ÇÇà½ÃÅ°°í, ÇÁ·Î±×·¡¸Ó´Â ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÒ ¼ö°¡ ÀÖ´Ù.
spy > "ÇÁ·Î±×·¥À» 50 ¹ø° ÁÙ±îÁö ½ÇÇà½ÃÄѶó" ÀÌÇØ·ÂÀÌ ºü¸¥ ÇÁ·Î±×·¡¸Ó¶ó¸é, À§¿Í °°Àº ½ÄÀ¸·Î ¾î¶²ÇÑ ¿øÀο¡¼ ¹ö±×°¡ »ý°å´ÂÁö ½±°Ô ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. "spy"´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ º¯¼öÀÇ °ª°ú Çü½ÄµîÀ» ¾Ë·ÁÁֱ⠶§¹®¿¡ ¸Å¿ì À¯¿ëÇÏ´Ù. ±×¸®°í, ÀÌ·±ÇÑ ÀÏÀº µð¹ö°ÅÀÇ °¡Àå ÇʼöÀûÀÎ ÀÏÀÌ´Ù. ÁÖÀÇ !!. ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§Çؼ´Â ÄÄÆÄÀÏÀ» ÇÒ ¶§ -g¶ó´Â ¿É¼ÇÀ» ²À!! ºÙ¿© Áà¾ß ÇÑ´Ù. ¸®´ª½º¿¡´Â GDB(GNU ¼Ò½º¼öÁØÀÇ µð¹ö°Å/"The GNU Source-Level Debugger")¶ó´Â µð¹ö°Å°¡ ÀÖ´Ù. (¹°·Ð ´Ù¸¥ Ç÷§Æû¿¡µµ ÀÖ´Ù.) GNU General Public License¸¦ µû¸£°í ÀÖ°í, ¹«·á·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. C, C++, Modula-2¿Í Assemler·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ¿¡´Â ±âº»ÀûÀ¸·Î gdb¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¸¸¾à ¾ø´Ù¸é ´Ù¸¥ ¸®´ª½º ¹èÆ÷ÆÇÀ» ã¾Æ º¸´øÁö, ¾Æ´Ï¸é ÀÎÅͳݿ¡¼ ±¸Çϱ⠹ٶõ´Ù. ¼Ò½º Äڵ带 /usr/src¿¡ ±ò¾Ò´Ù¸é, /usr/src/gdb-4.xxxx/gdb·Î °¡¼ ./configure¸¦ ÀÔ·ÂÇÏ°í, docÀ̶õ µð·ºÅ͸®·Î °¡¼, gdb¿¡ ´ëÇÑ ¹®¼¸¦ ¸¸µé¸é µÈ´Ù. "make gdb.dvi; make refcard.dvi"¶ó°í ÀÔ·ÂÇÏ¸é µÈ´Ù. ÀÌ ÆÄÀϵéÀº ¸®´ª½º »ó¿¡¼ ½±°Ô ÀÐÀ» ¼ö ÀÖ°í, ÇÁ¸°Æ® ÇÒ ¼ö ÀÖ´Ù.
DDD¶õ ¹«¾ùÀΰ¡.?gdb¿¡ ´ëÇÑ ¼³¸íÀ» °è¼ÓÇϱ⠺¸´Ù´Â ÀÌÁ¨ Ãʺ¸ÀÚ°¡ ½±°Ô ¾µ ¼ö ÀÖ°í, ±×·¡ÇÈÄÃÇÑ È¯°æÀ» Á¦°øÇÏ´Â DDD( Display Data Debugger)¿¡ ´ëÇÏ¿© ¾Ë¾Æ º¸ÀÚ.DDD´Â ÀϹÝÀûÀ¸·Î ´Ù¸¥ µð¹ö°Åº¸´Ù »ç¿ëÇϴµ¥ Æí¸®ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ°í, ¶Ç µð¹ö±ëÀ» Çϴµ¥ ÇÊ¿äÇÑ È¯°æÀ» ¼Õ½±°Ô ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸, µð¹ö°Å´Â ±âº»ÀûÀ¸·Î gdb¸¦ »ç¿ëÇÏ°í, ÀÎÅÍÆäÀ̽º¸¸À» Á¦°øÇÑ´Ù´Â Á¡À» ¸í½ÉÇؾßÇÑ´Ù. µû¶ó¼ DDD´Â gdb°¡ ²À ÀÖ¾î¾ß¸¸ ÇÑ´Ù. gdb¸»°íµµ, dbx³ª xdb, jdb¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù. DDDÀÇ ¼Ò½º´Â http://www.cs.tu-bs.de/softech/ddd/¿¡¼ ±¸ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð RedHat »ç¿ëÀÚ´Â rpm ÆÐÅ°Áö·Îµµ ±¸ÇÒ ¼ö ÀÖ´Ù. DDD¿¡´Â µÎ °¡Áö ¹öÀüÀÌ ÀÖ´Ù. Çϳª´Â MotifÀÇ µ¿Àû ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â ¹öÀüÀÌ°í, ´Ù¸¥ Çϳª´Â Á¤Àû ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. Á¤Àû ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ ¹öÀüÀº ÀÚ½ÅÀÇ ¸®´ª½º¿¡ Motif°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê´Â »ç¿ëÀÚ¸¦ À§ÇÑ ¹öÀüÀÌ´Ù. MotifÀÇ Å¬·Ð(clone)À¸·Î ¹«·á·Î »ç¿ëÇÒ ¼ö ÀÖ´Â Lesstif¸¦ ÀÌ¿ëÇؼµµ ÄÄÆÄÀÏÀÌ °¡´ÉÇѵ¥, ÀÌ¿¡ ´ëÇÑ ¼³¸íÀº ÇÏÁö ¾Ê±â·Î ÇÑ´Ù. °ü½ÉÀÖ´Â »ç¶÷Àº http://www.lesstif.org¸¦ ã¾Æº¸±â ¹Ù¶õ´Ù. ¿¹Àü¿¡ DDD´Â lesstif 0.75¿¡¼ ÄÄÆÄÀÏÀÌ ¼º°øÇß¾ú´Ù. lesstif¿¡ ´ëÇÑ °ÍÀº À§ÀÇ ½ÎÀÌÆ®¸¦ ã¾Æ°¡±â ¹Ù¶õ´Ù. ddd¸¦ ½ÇÇà ½ÃÅ°¸é ´ÙÀ½°ú °°Àº ȸéÀÌ º¸ÀδÙ.(Å« ±×¸²À» º¸·Á¸é ¸¶¿ì½º·Î Ŭ¸¯Çϼ¼¿ä.)
±×¸² 1. dddÀÇ ±âº» ȸé DDD¸¦ ½ÇÇà½ÃÅ°´Â ¹æ¹ý¿¡´Â ¼¼ °¡Áö°¡ ÀÖ´Ù. ù¹ø° ¹æ¹ýÀº À§¿¡¼ SPYÀÌ À̸§ºÙÀÎ µð¹ö°Åó·³ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ´Ù¸¥ µÎ ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
ddd <program> core "core"¶ó´Â ÆÄÀÏÀº ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ ¹®Á¦°¡ ÀÖÀ» ¶§¸¶´Ù »ý¼ºµÇ´Â ÆÄÀÏÀε¥ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¸¹Àº Á¤º¸¸¦ ´ã°í ÀÖ´Ù. ¸¸¾à ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ÄÚ¾î´ýÇÁ(core dump)¸¦ ¸¸µéÁö ¾Ê´Â´Ù¸é ÄÚ¾î(core)¿¡ °ü·ÃµÈ ȯ°æ º¯¼ö¸¦ È®ÀÎÇÏ¿© º¸¾Æ¶ó. ('ulimit -a'´Â ¸ðµç °ÍµéÀ» º¸¿©ÁÖ°í, 'ulimit -c <value>'´Â ÃÖ´ë Å©±â³ª, ´Ù¸¥ °ªµéÀ» º¸¿© ÁØ´Ù.) process_id´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇà µÇ°í ÀÖ´Â Áß°£¿¡µµ µð¹ö±ëÀ» ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. DDDÀÇ ±×·¡ÇÈ È¯°æÀº ÇÁ·Î±×·¥À» ½ÇÇà ½ÃÅ°´Âµ¥ ´Ù¾çÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ´Ù¾çÇÑ ¹æ¹ýÀ» ¿©±â¼ ¼³¸íÇÒ ¼ö´Â ¾ø°í, °¡Àå °£´ÜÇÑ ¹æ¹ý¸¸À» ¼³¸íÇÒ °ÍÀÌ´Ù. ¶Ç DDD ½ÇÇà ȸé Áß °¡Àå ¹ØÀÇ Ã¢(µð¹ö°ÅÀÇ ÄܼÖ/"Debugger console")¿¡´Â ddd¿¡ ÀÇÇؼ ½ÇÇàµÇ´Â ÀϵéÀÌ º¸¿©Áø´Ù. ¶Ç ÀÌ Ã¢Àº gdbÀÇ ¸í·É¾î¸¦ ¹è¿ì´Âµ¥µµ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ´Ù.
DDDÀÇ ±×·¡ÇÈ È¯°æ±×¸² 1À» º¸¸é ±âº» âÀÌ ¼¼ ºÎºÐÀ¸·Î ³ª¿öÁ® ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. °¡Àå ¹ØÀÇ Ã¢Àº µð¹ö°Å ÄܼÖ(Debugger Console)ÀÌ´Ù(À§ÀÇ ¿¹´Â gdbÀÌ´Ù). ÀÌ Ã¢¿¡ gdbÀÇ ¸í·ÉÀ» Á÷Á¢ ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù. °¡¿îµ¥ âÀº ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 º¸¿© ÁØ´Ù. ¸Ç À§ÀÇ Ã¢Àº ÇÁ·Î±×·¥ÀÇ º¯¼ö³ª °´Ã¼¸¦ ±×·¡ÇÈÀûÀ¸·Î º¸¿©ÁØ´Ù. ¶Ç, µÕµÕ¶°´Ù´Ï´Â âÀÎ Åø¹Ù´Â dddÀÇ ¸í·ÉÀ» ½ÇÇà½ÃÅ°°Å³ª Á¦¾îÇϴ âÀÌ´Ù.ºÎ°¡ÀûÀ¸·Î ½ÇÇàÇÒ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ½ÇÇà â°ú, ¼Ò½º Äڵ带 ¿¡µðÆ®ÇÒ ¼ö Àִ âÀÌ Àִµ¥ À̵éÀº ¼±ÅÃÀûÀ¸·Î ¶ç¿ï ¼ö ÀÖ´Ù. ddd´Â »ç¿ëÀÚ¿¡°Ô ¸¹Àº µµ¿ò¸»À» Á¦°øÇÑ´Ù. ¿¹¸¦ µé¾î ¸¶¿ì½ºÀÇ Ä¿¼°¡ º¯¼ö À§¿¡ ³õ¿©Áö°Å³ª ¹öÆ° À§¿¡ ³õ¿©Áö°Ô µÇ¸é, ÀûÀýÇÑ Ç³¼± µµ¿ò¸»ÀÌ ¶á´Ù. ¶Ç, âÀÇ °¡Àå ¹Ø Å׵θ®¿¡´Â ÇöÀç ½ÇÇà ÁßÀÎ ¸í·É¾î¿Í ±×ÀÇ »óŸ¦ º¸¿© ÁØ´Ù. Æ˾÷ ¸Þ´ºÀÇ ¿À¸¥ ÂÊ¿¡´Â "help" ¸Þ´º°¡ ÀÖ´Ù. F1 Å°¸¦ ´·¯µµ ÀÚ¼¼ÇÑ µµ¿ò¸»À» º¼ ¼ö ÀÖ´Ù. ¶ÇÇÑ ¸Ç ¹ØÀÇ Ã¢¿¡¼ "help"¶ó°í Ä¡°Å³ª, "help ¸í·É¾î(command_name)"¶ó°í Ä¡¸é, ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¼ ¼ö ÀÖ´Ù. ±âº»ÀûÀ¸·Î ÇϳªÀÇ Frame¿¡ ¼¼°³ÀÇ Ã¢ÀÌ Á¸ÀçÇÏ´Â ¸ð½ÀÀε¥, "Preference" ¸Þ´ºÀ» ÀÌ¿ëÇÏ¿© ¿øÇÏ´Â ¸ð¾çÀ¸·Î ºÐ¸®½Ãų ¼öµµ ÀÖ´Ù.
Figure 2. File ¸Þ´º¿¡ ´ëÇÑ µµ¿ò¸»
°¡Àå ¹Ø¿¡ Àִ â ºÎÅÍ ½ÃÀÛÇÏÀÚ¸Ç ¹Ø¿¡ Àִ âÀÎ "Debugger Console"ÀÌ ¿ì¸®°¡ µð¹ö±ëÀ» ÇÒ ¶§ óÀ½À¸·Î ÇÒ ºÎºÐÀÌ´Ù. gdb¸¦ ÀÌ¹Ì »ç¿ëÇØ º» ÀûÀÌ ÀÖ´Â »ç¿ëÀÚ¶ó¸é, ÀÌ Ã¢¿¡¼ ½±°Ô ddd¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ddd¿¡ ¸í·ÉÀ» ³»¸®¸é¼ ¾î¶² ÀÏÀÌ ÀÏ¾î ³µ´ÂÁö¿¡ ´ëÇؼµµ ÀÌ Ã¢À» ÅëÇØ ½±°Ô ¾Ë ¼ö ÀÖ´Ù. Áö±Ý±îÁö »ç¿ëÇÑ ¸í·É¾î¸¦ º¸·Á¸é "Commands -> Command History" ¸Þ´º¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. DDD¿¡ ´ëÇؼ ÀÚ¼¼È÷ ¾Ë°íÀÚ ÇÒ °æ¿ì´Â DDD¸¦ ¼³Ä¡ÇÒ ¶§ °°ÀÌ µþ·Á¿À´Â ¹®¼¸¦ »ìÆ캸±â ¹Ù¶õ´Ù. ÀÌ ±Û¿¡¼´Â ¸î°¡Áö °£´ÜÇÑ ÀÏÀ» ÇØ º¼ °ÍÀÌ´Ù.
ÀϹÝÀûÀÎ µð¹ö±ë"File" ¸Þ´º¿¡¼ µð¹ö±ëÀ» ÇÒ ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 Àоî¿Â´Ù. ±×·¯¸é â¿¡ ¼Ò½º Äڵ尡 º¸ÀÏ °ÍÀÌ´Ù.¼Ò½º Äڵ带 º¸¸é¼ º¯¼öÀÇ °ªÀ̳ª Çü½Ä µîÀ» ¾Ë ¼ö ÀÖ´Ù.ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡´Â ¸ð½ÀÀº ½ÇÇà â("Option -> Run in Execution Window")³ª debugger console¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù. debugger console¿¡¼´Â GUI ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇؼ ¸¸µç ÇÁ·Î±×·¥Àº ½ÇÇà½Ãų ¼ö°¡ ¾ø´Ù. ¼Ò½º Äڵ忡¼ ¸¶¿ì½º¸¦ º¯¼ö À§¿¡ °¡Á®´Ù ³õÀ¸¸é, ÇöÀç º¯¼öÀÇ °ªÀ» ¾Ë ¼ö°¡ ÀÖ´Ù. ¾Æ´Ï¸é, º¯¼öÀÇ À§¿¡ ¸¶¿ì½º¸¦ ³õÀº ÈÄ, ¸¶¿ì½ºÀÇ ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é ´ÙÀ½°ú °°Àº ¸Þ´º°¡ ³ªÅ¸³´Ù.
"Print fname"´Â º¯¼ö fnameÀÇ °ªÀ» debugger console¿¡ º¸¿©ÁÖ°í, "Display fname"´Â º¯¼ö fnameÀÇ °ªÀ» °¡Àå À§¿¡ Àִ â("drawing area")¿¡ º¸¿©ÁØ´Ù.(Æ÷ÀÎÅÍ º¯¼ö¿¡ ´ëÇؼµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.) "What is"´Â º¯¼öÀÇ Çü½ÄÀ̳ª ±¸Á¶¸¦ º¸¿©ÁÖ°í, "Lookup"Àº °°Àº º¯¼ö°¡ ´Ù¸¥ °÷¿¡ ÀÖ´ÂÁö ã´Âµ¥ ¾²ÀδÙ. ¸¶Áö¸·À¸·Î "Break at", "Clear at"Àº ¹Ø¿¡¼ ¹è¿ï ¸ØÃãÁ¡(Breakpoints)¿¡ ´ëÇÑ ¼³Á¤À» Çϴµ¥ ÀÌ¿ëµÈ´Ù. ÀÌ·¯ÇÑ ÀÏ°ú ¸î¸î ÀϵéÀº ¼Ò½º ÄÚµå âÀÌ ¹Ø ºÎºÐ¿¡ ÀÖ´Â ¹öÆ°µéÀ» ÀÌ¿ëÇؼ ÇÒ ¼öµµ ÀÖ´Ù. ¹Ú½º ºÎºÐ¿¡ ÀÎÀÚ¸¦ ÀÔ·ÂÇÏ°í, ¿øÇÏ´Â ¹öÆ°À» ´©¸£¸é µÈ´Ù. ¸ØÃãÁ¡(Break-points)´Â ÇÁ·Î±×·¥À» ¿øÇÏ´Â ºÎºÐ±îÁö ½ÇÇà ½ÃÅ°´Âµ¥ »ç¿ëµÈ´Ù. ÇÁ·Î±×·¥ÀÌ ¿øÇÏ´Â °÷±îÁö ½ÇÇàµÇ°í, ÀϽà ÁߴܵǾúÀ¸¸é À̶§ºÎÅÍ º¯¼öÀÇ °ª µîÀ» Á¶»çÇÒ ¼ö ÀÖ°í, ÇÁ·Î±×·¥À» °è¼Ó ½ÇÇà ½Ãų ¼ö ÀÖ´Ù. ¸ØÃãÁ¡(break-ponint)°¡ ¾øÀ¸¸é ÇÁ·Î±×·¥Àº Á¤»óÀûÀ¸·Î Á¾·áÇϰųª, ¹ö±×(bug)¿¡ ÀÇÇؼ Á¾·áµÉ ¶§±îÁö ½ÇÇàÀÌ µÈ´Ù. ÀÌ ¶§´Â ÀÌ¹Ì ÇÁ·Î±×·¥ÀÌ ¿Ö Á¾·áµÇ¾ú´ÂÁö Á¶»çÇϱ⿡ ³Ê¹« ´Ê¾ú´Ù. µû¶ó¼ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ µð¹ö±ëÀ» ÇÏ´Â °ÍÀº ÇÊ¿äÇÏ´Ù.
´ÙÀ½°ú °°ÀÌ ÇÏ¿© ¸ØÃãÁ¡(breakpoint)À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
À§ÀÇ ±×¸²¿¡¼ 70¹ø° ÁÙ°ú 71¹ø° ÁÙ¿¡ Breakpoint°¡ ÁöÁ¤µÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù. Breakpoint¸¦ ³ªÅ¸³»´Â ±×¸²Àº ÇÑ´«¿¡ ¾Ë ¼ö ÀÖ´Ù.
À§ÀÇ ¸Þ´º¸¦ ÀÌ¿ëÇؼ Breakpoint¿¡ ´ëÇÑ °ü¸®¸¦ ÇÒ ¼ö ÀÖ´Ù.
¸ÞÀÎ ¸Þ´º¿¡ ÀÖ´Â °Í°ú, Floating window¿¡ ÀÖ´Â °ÍÀ» ³ªÅ¸³»¾ú´Ù. À̵éÀ» ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°°Å³ª ÁߴܽÃų ¼ö ÀÖ´Ù. ¸ÞÀÎ ¸Þ´º¸¦ ÀÌ¿ëÇؼ ½ÇÇà½ÃÅ°¸é ÇÁ·Î±×·¥¿¡ ÆĶó¸ÞÅÍ(Parameter)¸¦ ÁÖ¾î ½ÇÇà½Ãų ¼ö ÀÖ´Ù. "Step"À» ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ÇÑ ÁÙ¾¿ ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ½ÇÇàÀ» ÇÏ¸é¼ ÇÔ¼ö(function)¸¦ ¸¸³µ´Ù¸é, "Step"Àº ÇÔ¼ö(function)ÀÇ Ã¹ ÁÙ¿¡¼ ´Ù½Ã "Step"À» ´©¸¦ ¶§±îÁö ±â´Ù¸± °ÍÀÌ´Ù. ¹Ý¸é "Next"´Â ÇÔ¼ö¸¦ ÇѲ¨¹ø¿¡ ½ÇÇà½ÃŲ´Ù. "Continue"´Â Breakpoint¿¡ ÀÇÇØ ÇÁ·Î±×·¥ÀÌ ÀϽà ÁߴܵǾúÀ» ¶§ °è¼ÓÇؼ ÇÁ·Î±×·¥À» ¼öÇàÇϵµ·Ï ÇÑ´Ù. "kill", "interrupt","Abort"´Â ÇÁ·Î±×·¥À» ÁߴܽÃų ¶§ ¾²ÀδÙ. DDDÀÇ °¡Àå Å« Ư¡Àº ¸Ç À§ÀÇ Ã¢¿¡ ÀÖ´Ù. ¿ì¸®´Â ÀÌ Ã¢À» ÀÌ¿ëÇؼ DadaÀÇ ±¸Á¶¸¦ ±×·¡ÇÈÇÏ°Ô º¼ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹¿¡¼´Â Arguement·Î µé¾î¿Â ¹è¿ÀÇ ±¸Á¶¿Í, ¿ø¼ÒµéÀÇ °ªÀ» º¸¿© ÁØ´Ù. "Data -> More Status Displays"¸¦ ÀÌ¿ëÇؼ »ç¿ëÀÚ°¡ º¸±â ¿øÇÏ´Â °ÍÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ Ã¢Àº ¸Å¿ì ¸¹Àº Á¤º¸¸¦ º¸¿© ÁØ´Ù. ´ÙÀ½ÀÇ ¿¹¿¡¼´Â ÇÁ·Î¼¼¼ÀÇ ·¹Áö½ºÅÍ¿¡ ¾î¶² °ªÀÌ ÀÖ´ÂÁö¿Í ÇÁ·Î±×·¥À» ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ µ¿Àû ¶óÀ̺귯¸® µîÀ» º¸¿©ÁØ´Ù.
¸¶Ä¡´Â ±ÛDDDÀÇ È¯°æÀº "Options -> Preferences"¸¦ ÀÌ¿ëÇؼ »ç¿ëÀÚÀÇ ÃëÇâ¿¡ ¸Â°Ô ¼³Á¤µÉ ¼ö ÀÖ´Ù. ¾Æ´Ï¸é, Motif·Î ¸¸µé¾îÁø ÇÁ·Î±×·¥ÀÇ ¼³Á¤ ¹æ¹ýÀÎ $HOME/.dddinitÀ¸·Îµµ ¼³Á¤µÇ¾îÁú ¼ö ÀÖ´Ù. ÀÚ¼¼ÇÑ ¼³¸íÀº ÀÌ ±ÛÀÇ ¹üÀ§¸¦ ³Ñ¾î°¡¹Ç·Î »ý·«ÇÑ´Ù.ddd¸¦ ¼³Ä¡ÇÒ ¶§ °°ÀÌ µé¾î ÀÖ´Â ddd.ps¶ó´Â ¹®¼¸¦ ²À ÇÑ ¹ø ÀÐ¾î º¸±â ¹Ù¶õ´Ù. ¶ÇÇÑ gdbÀÇ ¼³¸í¼µµ ÀÐ¾î º¸±â ¹Ù¶õ´Ù.("Debugging with DDB") ¾à°£ÀÇ ½Ã°£¸¸ ÅõÀÚÇÏ¸é ½±°Ô µð¹ö±ë¿¡ ´ëÇؼ ¹è¿ï ¼ö ÀÖ´Ù. ¸¶Áö¸·À¸·Î ÀÌ ±Û¿¡ À߸øµÈ ±ÛÀÌ ÀÖ´Ù¸é ¿ë¼Çϱ⠹ٶõ´Ù ^^;.
¹ø¿ª : ÇãÁ¤¼ö
´õ ¸¹Àº Á¤º¸¸¦ ¾Ë°í ½ÍÀ¸¸é:
|
º» À¥»çÀÌÆ®´Â Miguel Angel Sepulveda¾¾¿¡ ÀÇÇØ °ü¸®µË´Ï´Ù. © Emre Demiralp 1998 LinuxFocus 1998 |