FreeBSD ÇÚµåºÏ : Ä¿³Î µð¹ö±ë : DDB¸¦ ÀÌ¿ëÇÑ ¿Â¶óÀÎ Ä¿³Î µð¹ö±ë
Previous: ´ýÇÁÀÇ »çÈÄ ºÐ¼®(post-mortem)
Next: ¿ø°Ý GDB¸¦ ÀÌ¿ëÇÑ ¿Â¶óÀÎ Ä¿³Î µð¹ö±ë

22.3. DDB¸¦ ÀÌ¿ëÇÑ ¿Â¶óÀÎ Ä¿³Î µð¹ö±ë

¿ÀÇÁ¶óÀÎ µð¹ö°Å·Î¼­ kgdb´Â ¸Å¿ì ³ôÀº ¼öÁØÀÇ À¯Àú ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏÁö¸¸, ÇÒ ¼ö ¾ø´Â ÀÛ¾÷ÀÌ ¸î°¡Áö ÀÖ½À´Ï´Ù. À̵é Áß¿¡¼­ Á¦ÀÏ Áß¿äÇÑ °ÍµéÀÌ Áß´ÜÁ¡(breakpoint) °É±â¿Í, Ä¿³Î ÄÚµåÀÇ ´Ü°èÀû ¼öÇà(single-step)ÀÔ´Ï´Ù.

¸¸¾à Ä¿³Î¿¡ ´ëÇÑ Àú¼öÁØÀÇ µð¹ö±ëÀÌ ÇÊ¿äÇÒ °æ¿ì, DDB¶ó ºÒ¸®¿ì´Â ¿Â¶óÀÎ µð¹ö°Å¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. DDB´Â Áß´ÜÁ¡ °É±â, Ä¿³Î ÇÔ¼öÀÇ ´Ü°èÀû ¼öÇà, Ä¿³Î º¯¼öÀÇ °Ë»ç ¹× º¯°æ µîÀÇ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª Ä¿³Î ¼Ò½º ÆÄÀÏÀº ¾ï¼¼½º ÇÒ ¼ö ¾øÀ¸¸ç, kgdb¿¡¼­¿Í °°Àº ¸ðµç µð¹ö±ë Á¤º¸°¡ ¾Æ´Ñ Àü¿ª ¹× Á¤Àû º¯¼ö¿¡ ´ëÇÑ ¾ï¼¼½º¸¸ °¡´ÉÇÕ´Ï´Ù.

Ä¿³Î¿¡ DDB¸¦ Æ÷ÇÔÇϵµ·Ï ¼³Á¤Çϱâ À§Çؼ­´Â, ¼³Á¤ ÆÄÀÏ¿¡ ´ÙÀ½ÀÇ ¿É¼Ç ¶óÀÎÀ» Ãß°¡ÇÏ°í Ä¿³ÎÀ» ´Ù½Ã ºôµåÇϱ⠹ٶø´Ï´Ù.

        options DDB
(FreeBSD Ä¿³Î ¼³Á¤¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Ä¿³Î ¼³Á¤À» º¸½Ã±â ¹Ù¶ø´Ï´Ù. ¸¸¾à ºÎÆ® ºí·°ÀÌ ¿À·¡µÈ ¹öÀüÀ̶ó¸é, µð¹ö°Å ½Éº¼ÀÌ ¸ðµÎ ·ÎµùµÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ºÎÆ® ºí·°À» ¾÷µ¥ÀÌÆ®ÇϽñ⠹ٶø´Ï´Ù. ÃÖ±ÙÀÇ °ÍÀº DDB ½Éº¼À» ·ÎµùÇÒ °ÍÀÔ´Ï´Ù.)

DDB Ä¿³ÎÀÌ ½ÇÇàµÇ¾úÀ» ¶§, DDB·Î µé¾î°¡´Â ¹æ¹ýÀÌ ¸î°¡Áö ÀÖ½À´Ï´Ù. ù¹ø°ÀÌÀÚ °¡Àå ºü¸¥ ¹æ¹ýÀº ºÎÆ® ÇÁ·ÒÇÁÆ®¿¡¼­ -d ºÎÆ® Ç÷¡±×¸¦ ÀԷ´ °ÍÀÔ´Ï´Ù. Ä¿³ÎÀº µð¹ö±× ¸ðµå·Î ½ÃÀÛµÉ °ÍÀ̸ç, ÀåÄ¡ üũ ÀÌÀü¿¡ ¸ÕÀú DDB·Î µé¾î°¥ °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î ÀåÄ¡ üũ/¿¬°á ÇÔ¼öµéµµ µð¹ö±×ÇÒ ¼ö ÀÖ½À´Ï´Ù.

µÎ¹ø° ½Ã³ª¸®¿À´Â Å°º¸µåÀÇ Ctrl-Alt-ESC ÇÖÅ°¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ½Ã½ºÅÛ Äֿܼ¡¼­´Â ÀÌ ÇÖÅ°°¡ ¹Ù²ð ¼ö ÀÖÀ¸¹Ç·Î, È®ÀÎÀ» ÇØ¾ß ÇÕ´Ï´Ù. ÄÜ¼Ö ¶óÀÎ »ó¿¡¼­ ½Ã¸®¾ó ¶óÀÎ BREAK¸¦ »ç¿ëÇÏ¿© DDB·Î µé¾î°¥ ¼ö ÀÖ´Â ½Ã¸®¾ó ÄܼÖÀ» À§ÇÑ ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù(Ä¿³Î ¼³Á¤ ÆÄÀÏ¿¡¼­ÀÇ ``options BREAK_TO_DEBUGGER''). ÀÌ ¿É¼ÇÀº µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀºµ¥, ±× ÀÌÀ¯´Â ÄÉÀ̺íÀ» »ÌÀ» ¶§Ã³·³ ºÒÇÊ¿äÇÏ°Ô BREAK »óŸ¦ ¹ß»ý½ÃÅ°´Â ÇÊ¿ä ¾ø´Â ½Ã¸®¾ó ¾î´ðÅÍ°¡ ¸¹ÀÌ Á¸ÀçÇϱ⠶§¹®ÀÔ´Ï´Ù.

¼¼¹ø° ¹æ¹ýÀº Ä¿³ÎÀÌ DDB¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇßÀ» °æ¿ì ÆдР»óÅ°¡ ¹ß»ýÇÏ¿© DDB·Î ½ÇÇàÀÌ ºÐ±âµÇ´Â °ÍÀÔ´Ï´Ù. µû¶ó¼­ µÇµµ·Ï ¼ÕÀ» ´ëÁö ¾ÊÀ¸·Á´Â ½Ã½ºÅÛ¿¡ DDB ¿É¼ÇÀ» ¼³Á¤ÇÏ´Â °ÍÀº ±×´ÙÁö Çö¸íÇÑ »ý°¢ÀÌ ¾Æ´Õ´Ï´Ù.

DDB ¸í·ÉµéÀº ´ëü·Î gdbÀÇ ¸î°¡Áö ¸í·Éµé°ú ´à¾Ò½À´Ï´Ù. ¿©·¯ºÐÀÌ Ã¹¹ø°·Î ¿øÇÏ´Â ±â´ÉÀº ¾Æ¸¶ Áß´ÜÁ¡ÀÇ ¼³Á¤ÀÏ °ÍÀÔ´Ï´Ù.

  b ÇÔ¼ö À̸§
  b ÁÖ¼Ò

¼ýÀÚ´Â µðÆúÆ®·Î 16Áø¼ö·Î ÀνÄÇÕ´Ï´Ù. ±×·¯³ª a-f ¹®ÀÚ·Î ½ÃÀÛÇÏ´Â 16Áø¼öµéÀ» ÀÏ¹Ý ½Éº¼ À̸§°ú ±¸ºÐÇϱâ À§ÇÏ¿© ¾Õ¿¡ 0x¸¦ ºÙÀÔ´Ï´Ù(´Ù¸¥ ¼ýÀڵ鿡 ´ëÇؼ­´Â ¿É¼ÇÀÔ´Ï´Ù). ÇÔ¼ö À̸§ + 0x103 ¿Í °°Àº °£´ÜÇÑ ¼ö½ÄÀº »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.

ÀÛ¾÷ÀÌ Áß´ÜµÈ Ä¿³ÎÀ» ´Ù½Ã µ¿ÀÛ½ÃÅ°±â À§Çؼ­´Â °£´ÜÈ÷

  c
¸¦ Ä¡¸é µË´Ï´Ù. ½ºÅà ÃßÀûÀ» ¾ò±â À§Çؼ­´Â
  trace
Ä¡¸é µË´Ï´Ù. DDB¿¡ ÇÖÅ°¸¦ ÀÌ¿ëÇؼ­ µé¾î°¬À» ¶§, ÇöÀç Ä¿³ÎÀº ÀÎÅÍ·´Æ®¸¦ ¼öÇà Áß¿¡ ÀÖ´Â »óÅÂÀ̱⠶§¹®¿¡ ½ºÅà ÃßÀûÀº º°·Î ¼Ò¿ëÀÌ ¾øÀ» ¼ö ÀÖ½À´Ï´Ù.

Áß´ÜÁ¡À» »èÁ¦Çϱâ À§Çؼ­´Â ´ÙÀ½À» ¼öÇàÇÏ¸é µË´Ï´Ù.

  del
  del ÁÖ¼Ò(address-expression)
ù¹ø° Çü½ÄÀº Áß´ÜÁ¡À» ¸¸³­ »óÅ¿¡¼­ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀ̸ç, ÇöÀçÀÇ Áß´ÜÁ¡À» »èÁ¦ÇÕ´Ï´Ù. µÎ¹ø° Çü½ÄÀº ¾î´À °÷ÀÇ Áß´ÜÁ¡µµ Áö¿ï ¼ö ÀÖÁö¸¸, ¸íÈ®ÇÑ À§Ä¡¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. À§Ä¡´Â ´ÙÀ½ÀÇ ¸í·ÉÀ¸·ÎºÎÅÍ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
  show b
Ä¿³ÎÀ» ´Ü°èÀûÀ¸·Î ¼öÇàÇϱâ À§Çؼ­´Â ´ÙÀ½ÀÇ ¸í·ÉÀ» ¼öÇàÇϱ⠹ٶø´Ï´Ù.
  s
ÀÌ ¸í·ÉÀº ÇÔ¼öµé ¼ÓÀ¸·Î µé¾î°¥ °ÍÀÔ´Ï´Ù. ±×·¯³ª return ¹®À» ¸¸³­ ½ÃÁ¡¿¡¼­ DDB ÃßÀûÀ» ½ÇÇàÇÒ ¶§¿¡´Â ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.
  n
*ÁÖ* ÀÌ ¸í·ÉÀº gdbÀÇ `next' ¸í·É°ú´Â Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù. gdbÀÇ `finish'¿Í °°½À´Ï´Ù.

¸Þ¸ð¸®·ÎºÎÅÍ µ¥ÀÌÅ͸¦ È®ÀÎÇϱâ À§Çؼ­´Â ´ÙÀ½À» ½ÇÇàÇÕ´Ï´Ù(¿¹Á¦).

  x/wx 0xf0133fe0,40
  x/hd db_symtab_space
  x/bc termbuf,10
  x/s stringbuf
¿öµå/¹Ý¿öµå(halfword)/¹ÙÀÌÆ® ´ÜÀ§·Î È£ÃâÇÏ¿© 16Áø¼ö/10Áø¼ö/¹®ÀÚ/¹®ÀÚ¿­ ÇüÅ·ΠÃâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ½°Ç¥ ´ÙÀ½ÀÇ ¼ýÀÚ´Â ¿ÀºêÁ§Æ® Ä«¿îÆ®ÀÔ´Ï´Ù. ´ÙÀ½ÀÇ 0x10 °³ÀÇ ¾ÆÀÌÅÛµéÀ» Ãâ·ÂÇϱâ À§Çؼ­´Â °£´ÜÇÏ°Ô ´ÙÀ½ÀÇ ¸í·ÉÀ» ¼öÇàÇÕ´Ï´Ù.
  x ,10
¶È°°ÀÌ ´ÙÀ½À» ½ÇÇà½ÃÅ°¸é
  x/ia foofunc,10
foofuncÀÇ Ã¹¹ø° 10 °³ÀÇ ¸í·ÉµéÀ» µð½º¾î¼Àºí ÇÏ°í, foofuncÀÇ Ã³À½À¸·ÎºÎÅÍÀÇ ¿É¼Â°ª¿¡ ¸ÂÃç Ãâ·ÂÀ» ÇÕ´Ï´Ù.

¸Þ¸ð¸® ³»¿ëÀ» ¼öÁ¤ÇÏ·Á¸é, ´ÙÀ½ÀÇ ¾²±â ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.

  w/b termbuf 0xa 0xb 0
  w/w 0xf0010030 0 0
¸í·É ´ÙÀ½ÀÇ Á¢¹Ì»ç(b/h/w)´Â ¾µ µ¥ÀÌŸÀÇ Å©±â¸¦ ¸í½ÃÇÏ°í, ù¹ø°·Î µÚµû¶ó¿À´Â ¼ö½ÄÀº ¾µ ÁÖ¼Ò¸¦ ³ªÅ¸³»¸ç, ³ª¸ÓÁö´Â ÁöÁ¤ÇÑ ¸Þ¸ð¸® À§Ä¡¿¡ ¾µ µ¥ÀÌŸ·Î Çؼ®µË´Ï´Ù.

¸¸¾à ÇöÀç ·¹Áö½ºÅÍÀÇ Á¤º¸¿¡ ´ëÇØ ¾Ë°í ½Í´Ù¸é, ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù.

  show reg
À§¿Í º°µµ·Î, ´ÙÀ½ ¿¹¿¡¼­¿Í °°ÀÌ ÇÑ ·¹Áö½ºÅÍÀÇ °ª¸¸ Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù.
  p $eax
±×¸®°í ±× °ªÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
  set $eax new-value

DDB¿¡¼­ Ä¿³Î ÇÔ¼öµéÀ» È£ÃâÇØ¾ß ÇÑ´Ù¸é, °£´ÜÇÏ°Ô ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇÏ¸é µË´Ï´Ù.

  call func(arg1, arg2, ...)
ÇÔ¼öÀÇ ¹Ýȯ °ªÀÌ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.

½ÇÇàµÇ°í ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½ºµé¿¡ ´ëÇØ ps(1) ½ºÅ¸ÀÏÀÇ ¿ä¾àÀ» º¸°í ½Í´Ù¸é ´ÙÀ½À» ½ÇÇàÇÏ¸é µË´Ï´Ù.

  ps

Áö±Ý±îÁö´Â ¿Ö Ä¿³ÎÀÇ ½ÇÇàÀÌ ½ÇÆÐÇߴ°¡ Áø´ÜÇÏ´Â °ÍÀ̾ú°í, ±× ÈÄ¿¡´Â ¸®ºÎÆÃÀ» ¿øÇÒ °ÍÀÔ´Ï´Ù. Ä¿³Î ³»ºÎÀÇ ¿À·ùÀÇ ½É°¢¼º¿¡ µû¶ó Ä¿³ÎÀÇ ¸ðµç ºÎºÐÀÌ Á¦´ë·Î µ¿ÀÛÀ» ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖÀ½À» ±â¾ïÇϽñ⠹ٶø´Ï´Ù. ½Ã½ºÅÛÀ» Á¾·áÇÏ°í ´Ù½Ã ¸®ºÎÆÃÇϱâ À§Çؼ­ ´ÙÀ½¿¡ µû¸£´Â ¹æ½Ä Áß Çϳª¸¦ ¼öÇàÇϽñ⠻ç¶ø´Ï´Ù.

  call diediedie()

ÀÌ ¹æ¹ýÀº Ä¿³ÎÀÌ Äھ ´ýÇÁÇÑ ´ÙÀ½ ¸®ºÎÆÃÇϵµ·Ï Çϸç, ³ªÁß¿¡ kgdb µîÀÇ °í¼öÁØÀÇ µð¹ö°Å¿¡¼­ Äھ ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·ÉÀº `continue' ¼±¾ð ÈÄ¿¡ ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ µ¿ÀÛ¿¡ ´ëÇØ `panic'À̶ó´Â ¾Ù¸®¾î½º(alias)°¡ ÀÖÀ¾´Ï´Ù.

  call boot(0)
´Â ÇöÀç ½ÇÇà ÁßÀÎ ½Ã½ºÅÛÀ» ±ú²ýÇÏ°Ô Á¾·áÇÏ´Â ÈǸ¢ÇÑ ¹æ¹ýÀ̸ç, ¸ðµç µð½ºÅ©¿¡¼­ sync()¸¦ ¼öÇàÇÏ°í, ¸¶Áö¸·À¸·Î ¸®ºÎÆÃÀ» ¼öÇàÇÕ´Ï´Ù. Ä¿³ÎÀÇ µð½ºÅ©¿Í ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º°¡ ¼Õ»óµÇÁö ¾ÊÀº ÇÑ, ÀÌ ¹æ¹ýÀº Á¾·áÇÏ´Â ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.

  call cpu_reset()
ºñ»ó½Ã¿¡ `Àû»ö »óȲ ¹öÆ°'À» ´©¸¦ ¶§¿Í °°Àº ½É°¢ÇÑ ¹®Á¦¿¡ ºÎµúÇûÀ» ¶§ »ç¿ëÇÏ´Â ÃÖÈÄÀÇ ¹æ¹ýÀÔ´Ï´Ù.

¸í·Éµé¿¡ ´ëÇÑ ÂªÀº ¿ä¾àÀ» º¸±â ¿øÇÑ´Ù¸é, ´ÙÀ½ÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ¸é µË´Ï´Ù.

  help
±×·¯³ª, ddb(4) ¸Å´º¾ó ÆäÀÌÁö¸¦ ÇÁ¸°Æ®ÇÑ º¹»çº»À» °¡Áö°í µð¹ö±ë ¼¼¼Ç¿¡ ´ëºñÇÏ´Â °ÍÀ» °­·ÂÈ÷ ÃßõÇÕ´Ï´Ù. Ä¿³ÎÀ» ´Ü°èÀûÀ¸·Î ½ÇÇà½Ãų ¶§ ¿Â¶óÀÎ ¸Å´º¾óÀ» Àд °ÍÀº ¸Å¿ì ¾î·Á¿òÀ» ±â¾ïÇϱ⠹ٶø´Ï´Ù.


FreeBSD ÇÚµåºÏ : Ä¿³Î µð¹ö±ë : DDB¸¦ ÀÌ¿ëÇÑ ¿Â¶óÀÎ Ä¿³Î µð¹ö±ë
Previous: ´ýÇÁÀÇ »çÈÄ ºÐ¼®(post-mortem)
Next: ¿ø°Ý GDB¸¦ ÀÌ¿ëÇÑ ¿Â¶óÀÎ Ä¿³Î µð¹ö±ë