Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom
Bar]
Jose M. Laveda

ÇÊÀÚ¿¡°Ô ¿¬¶ôÇϱâ

µé¾î °¡´Â ¸»
µð¹ö°Å¶õ ¹«¾ùÀΰ¡?
DDD¶õ ¹«¾ùÀΰ¡?
DDDÀÇ ±×·¡ÇÈ È¯°æ
°¡Àå ¹Ø¿¡ Àִ â ºÎÅÍ ½ÃÀÛÇÏÀÚ.
ÀϹÝÀûÀÎ µð¹ö±ë
¸¶Ä¡´Â ±Û

DDD¸¦ ÀÌ¿ëÇÑ µð¹ö±ë

¿ä¾à: ddd´Â ȯ»óÀûÀÎ ±×·¡ÇÈȯ°æÀÇ µð¹ö°ÅÀÔ´Ï´Ù. ÀÌ ±Û¿¡¼­ ±Û¾´ÀÌ´Â dddÀÇ ±âº»±â´Éµé¿¡ ´ëÇØ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù.




µé¾î°¡´Â ±Û

ÀÌ ±Û¿¡¼­´Â µð¹ö°Å¸¦ »ç¿ëÇØ º¸Áö ¸øÇÑ »ç¶÷À» À§Çؼ­ µð¹ö°Å¶õ ¹«¾ùÀÎÁö, µð¹ö°ÅÀÇ °³³ä¿¡ ´ëÇؼ­ ¼³¸íÇÏ°í, ¶Ç »ç¿ëÇϱ⠽¬¿î GUI ȯ°æÀÇ µð¹ö°Å- DDD¸¦ ¼Ò°³ÇÑ´Ù. gdb¿Í °°Àº ÈǸ¢ÇÑ µð¹ö°Åµµ ÀÖÀ¸³ª, ÀÌ ±ÛÀ» ±³À°ÀûÀÎ ¸ñÀûÀ¸·Î ¾²¿´À¸¹Ç·Î, °£´ÜÇÑ µð¹ö°Å¸¦ °ñ¶ú´Ù.

µð¹ö°Å¶õ ¹«¾ùÀΰ¡?

"¿¾³¯¿¡ ÇÑ ÇÁ·Î±×·¡¸Ó°¡ »ì¾Ò´Âµ¥ ¹ö±×¸¦ ÀâÀ» ¶§¸é ¾ðÁ¦³ª ´ÙÀ½°ú °°Àº code¸¦ »ðÀÔÇÏ¿´´Ù.

/*Code*/
(...)
loop
change_a_variable;
show_value_of_variable;
end_loop
(...)

±×´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ º¯¼ö°¡ ¾î¶² °ªÀ» °®´ÂÁö ¾Ë¾Æ³»±â À§ÇÏ¿© ¾ðÁ¦³ª À§¿Í °°Àº Äڵ带 ¿©·¯±ºµ¥ »ðÀÔÇØ¾ß Çß´Ù. ÀÌ´Â ¸Å¿ì ¾î·Á¿î ÀÛ¾÷À̾ú°í, ¼Ò½º Äڵ带 ÀÛ¼ºÇÏ´Â ½Ã°£º¸´Ù, ¹ö±×¸¦ Àâ´Â ½Ã°£ÀÌ µÎ¹è³ª ´õ °É·È´Ù. "

´©±¸³ª À§¿Í °°Àº °æ¿ì¸¦ ÇѹøÂëÀº °Þ¾îºÃÀ» °ÍÀÌ´Ù. º¸Åë ÇÁ·Î±×·¥¿¡´Â ¹ö±×°¡ Àֱ⠸¶·ÃÀε¥, ÀÌ·± °æ¿ì º¸Åë ¼Ò½º ÄÚµåÀÇ ÀÌ°÷Àú°÷À» ¹Ù²ãº¸´Ù°¡ ±×·¡µµ ¾ÈµÇ¸é , " ÄÄÆÄÀÏ·¯¿¡ ¹®Á¦°¡ ÀÖ³ª º¸Áö?" ÇÏ°í´Â ³Ñ¾î°¡°í ¸¸´Ù. ÀÌ ¶§ ¹ö±×¸¦ ½±°Ô ã°Ô ÇØÁÖ´Â µð¹ö°Å¸¦ ÀÌ¿ëÇغ¸ÀÚ.

µð¹ö°Å´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇÏ°í, ÀÌ·± ½ÄÀ¸·Î ¿ì¸®´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡, º¯¼öÀÇ °ªÀÌ ¾ó¸¶ÀÎÁö, º¯¼öÀÇ ¼±¾ðÀº ¾î¶»°Ô µÇ¾ú´ÂÁö, ƯÁ¤ÇÑ Á¶°Ç¿¡¼­ ¾î¶² ÀÏÀÌ ¹ß»ýÇÏ´ÂÁö µîµî ¸ðµç °ÍÀ» Á¶»çÇÒ ¼ö ÀÖ´Ù. À§ÀÇ ¼³¸íÀÌ Á¶±Ý ºÎÁ·ÇÏ´Ù¸é °è¼Ó ±ÛÀ» ÀÐ¾î °¡¸é¼­ ÀÌÇظ¦ Çϵµ·Ï ÇÏÀÚ.

À§ÀÇ À̾߱âÀÇ ÁÖÀΰøÀÌ "spy"¶ó´Â µð¹ö°Å¸¦ ÀÌ¿ëÇÏ¸é ¾î¶²Áö º¸ÀÚ.

jose# spy my_program

À§Ã³·³ "spy"¸¦ ½ÇÇà½ÃÅ°°í, ÇÁ·Î±×·¡¸Ó´Â ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÒ ¼ö°¡ ÀÖ´Ù.

spy > "ÇÁ·Î±×·¥À» 50 ¹ø° ÁÙ±îÁö ½ÇÇà½ÃÄѶó"
spy > "º¯¼ö XÀÇ °ªÀÌ ¾ó¸¶ÀÎÁö Ãâ·ÂÇ϶ó"
spy > "º¯¼ö XÀÇ typeÀº ¹«¾ùÀΰ¡?"

ÀÌÇØ·ÂÀÌ ºü¸¥ ÇÁ·Î±×·¡¸Ó¶ó¸é, À§¿Í °°Àº ½ÄÀ¸·Î ¾î¶²ÇÑ ¿øÀο¡¼­ ¹ö±×°¡ »ý°å´ÂÁö ½±°Ô ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.

"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
ddd <program> <process_id>

"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)À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

  • ¸ØÃãÁ¡(breakpoint)À» ¼³Á¤ÇÏ°íÀÚ ÇÏ´Â ÁÙÀÇ ¸Ç ¿ÞÂÊ¿¡ ¸¶¿ì½º¸¦ À§Ä¡½ÃŲ ´ÙÀ½ ¸¶¿ì½ºÀÇ ¿À¸¥ÂÊ ¹öÆ°À» ´©¸¥´Ù. ±×¸®°í "Set Breakpoint"³ª "Set Temporary Breakpoint"¸¦ ¼±ÅÃÇÑ´Ù. ÀÌ µÑÀÇ Â÷ÀÌÁ¡Àº Temporary´Â ±× ÁÙ±îÁö ½ÇÇàÀÌ Çѹø µÈ ÈÄ Breakpoint°¡ »èÁ¦µÈ´Ù´Â Á¡ÀÌ´Ù. "Set Breakpoint"´Â ¸í·É¾î¿¡ ÀÇÇؼ­¸¸ Breakpoint°¡ »èÁ¦ µÈ´Ù.
  • ¼Ò½º ÄÚµå â¿¡¼­ "Break at()"¶ó´Â ¹öÆ°À» ´©¸¥´Ù.
  • debugger console¿¡¼­ "break <ÁÙ¹øÈ£>"¸¦ ÀÔ·ÂÇÑ´Ù.
  • "Source->Edit Breakpoints" ¸Þ´º¿¡¼­ breakpoint¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù.
  • À§ÀÇ ±×¸²¿¡¼­ 70¹ø° ÁÙ°ú 71¹ø° ÁÙ¿¡ Breakpoint°¡ ÁöÁ¤µÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù. Breakpoint¸¦ ³ªÅ¸³»´Â ±×¸²Àº ÇÑ´«¿¡ ¾Ë ¼ö ÀÖ´Ù.

    À§ÀÇ ¸Þ´º¸¦ ÀÌ¿ëÇؼ­ Breakpoint¿¡ ´ëÇÑ °ü¸®¸¦ ÇÒ ¼ö ÀÖ´Ù.
    "Condition" À» ÀÌ¿ëÇϸé, Á¶°Ç¿¡ ¸¸Á·ÇÒ ¶§¸¸ Breakpoint°¡ ÀÛµ¿À» Çϵµ·Ï ÇÒ ¼öµµ ÀÖ´Ù. ÇÁ·Î±×·¥ÀÌ Breakpoint¸¦ ¸¸³µÀ» ¶§, Á¶°ÇÀÌ ¸Â´ÂÁö¸¦ È®ÀÎÇÏ°í, Á¶°Ç¿¡ ¸ÂÀ» ¶§¸¸ ¸ØÃß°Ô ÇÒ ¼ö ÀÖ´Ù."Ignore Count"¸¦ ÀÌ¿ëÇÏ¿© Breakpoint°¡ ÁöÁ¤µÈ ÁÙÀ» <n>¹ø Áö³ª°í ³­ ÈÄ¿¡ ÇÁ·Î±×·¥ÀÌ ¸ØÃßµµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¿¹µé µé¾î ¹Ýº¹¹®¿¡¼­ ¹Ýº¹¹®ÀÌ 15¹ø ¹Ýº¹µÈ ÈÄ¿¡ ¸ØÃßµµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü ÇÁ·Î±×·¥ÀÌ 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