¿ÀÇÁ¶óÀÎ µð¹ö°Å·Î¼ 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)
¸Å´º¾ó ÆäÀÌÁö¸¦ ÇÁ¸°Æ®ÇÑ º¹»çº»À»
°¡Áö°í µð¹ö±ë ¼¼¼Ç¿¡ ´ëºñÇÏ´Â °ÍÀ» °·ÂÈ÷ ÃßõÇÕ´Ï´Ù.
Ä¿³ÎÀ» ´Ü°èÀûÀ¸·Î ½ÇÇà½Ãų ¶§ ¿Â¶óÀÎ ¸Å´º¾óÀ» Àд °ÍÀº
¸Å¿ì ¾î·Á¿òÀ» ±â¾ïÇϱ⠹ٶø´Ï´Ù.