Subject : Introduction to adb

Description :


  -----------------------
 | introduction to adb I |                    - "PANIC" chapter 7 -
  -----------------------

 UNIX "adb" command ´Â °¡Àå ¿À·¡µÇ°í °¡Àå ½±°Ô ¾òÀ» ¼ö ÀÖ´Â UNIX debuggers ÀÌ´Ù.
 ºñ·Ï adb °¡ GUI ¿Í °°Àº Ư¼ºÀ» °®Áö ¸øÇÏ°í source code ¿¡ Á÷Á¢ÀûÀÎ ÀÛ¾÷À» ÇÏÁö
 ¸øÇÏ´õ¶óµµ ¾ÆÁÖ °£´ÜÇϸç UNIX gurus»çÀÌ¿¡¼­ kernel debugger ·Î ¹Þ¾Æµé¿© Áø´Ù.
 adb ´Â kernel crashes ÀÇ ½ÃÇè¿¡¸¸ Á¦ÇѵÇÁö ¾ÊÀ¸¸ç user program°ú application
 packages ÀÇ ¹®Á¦¸¦ ã´Âµ¥µµ À¯È¿ÇÑ toolÀÌ´Ù.

 'adb(absolute debugger)'¶ó´Â À̸§Àº adb°¡ global symbols¿Í º¸Åë hexadecimal
 ÀÎ absolute address¸¦ ´Ù·ç´Â »ç½Ç¿¡¼­ Áö¾îÁ³´Ù.
 adb´Â source files,line numbers,local variables,internal function labelÀ» ¾ËÁö
 ¸øÇϸç assembly language¿Í º¹ÀâÇÏÁö ¾ÊÀº C code¿¡¼­ ÃÖÀûÀ¸·Î ÀÛ¾÷ÇÑ´Ù.

 adb ´Â ´Ü¼øÈ÷ ÀÌÇØÇÑ´Ù¸é Çϳª ¶Ç´Â µÎ ¹®ÀÚ ¸í·É¾î·Î¼­ live system»óÀÇ processÀÇ
 ½ÇÇàÀ» Á¦¾îÇÏ°í adbÀÇ µ¿ÀÛÀ» Á¦¾îÇϸç fileÀ̳ª memoryÀÇ ³»¿ëÀ» ¿©·¯°¡Áö ´Ù¸¥
 ¼ýÀÚ(numerous)Çü½ÄÀ¸·Î displayÇÑ´Ù.
 adb´Â system crashes ¿¡ ÀÇÇØ ¸¸µé¾îÁø postmortem file°ú live kernelÀÇ ÀÛ¾÷¿¡
 ¾Ë¸Â´Ù.

 adb´Â °£´ÜÇÏ°í ´Ü¼øÇÑ º»¼ºÀÌ ÀÖ´Â ¹Ý¸é adb macor¶ó´Â °­·ÂÇÑ ±â´ÉÀ» Á¦°øÇÑ´Ù.
 
 = The kernel resident absolute debugger,kadb
 
 kadb ÀÇ Æ¯Â¡Àº UNIX kernel ´ë½Å booting ÇÒ ¼ö ÀÖÀ¸¸ç kernel absolute debugger
 ÀÌ´Ù.
 kadb·Î boot up µÈ ÈÄ kernelÀ» loadÇÏ°í ½ÇÇà ½Ãų ¼ö ÀÖ´Ù.
 ±×¸®°í »ì¾Æ ÀÖ´Â »óÅ¿¡¼­ kernelÀ» ¼öÁ¤ÇÏ°í testÇÒ ¼ö ÀÖÀ¸¸ç breakpointsÀÇ 
 settingÀ» °¡´ÉÇÏ°Ô ÇØ ÁØ´Ù.(ÁÖ-breakpoint¶õ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÀÌ Áß´ÜµÇ¾î ½Ã½ºÅÛÀÇ
 »óÅÂ,º¯¼öµéÀÇ °ª ¶Ç´Â ±â¾ïÀå¼ÒÀÇ ³»¿ëµî°ú °°ÀÌ ÇÁ·Î±×·¥ÀÇ ÇöÀç»óŸ¦ ¾Ë¾Æº¼ ¼ö
 ÀÖ´Â ÁöÁ¡,ÀÌ·¯ÇÑ Áß´ÜÁ¡Àº ÇÁ·Î±×·¥ÀÇ ³»¿ëÀ» debugging ÇϱâÀ§ÇØ »ç¿ë)   
 kadbµµ macro facility¸¦ °¡Áö°í ÀÖÀ¸³ª adb macro Ư¼º°ú ´Ù¸£´Ù. kadb¿¡ À¯È¿ÇÑ
 macro´Â kadb°¡ ½ÇÇà °¡´ÉÇϵµ·Ï »õ·Î ¸¸µé¾îÁ®¾ß ÇÑ´Ù.
 
 system ÀÌ kadb ·Î ¶³¾îÁö¸é, ´Ù½Ã¸»ÇØ kadb prompt¸¦ º¸°ÔµÇ¸é ¸ðµç°ÍÀÌ stopµÈ´Ù.
 ´õÀÌ»ó À©µµ¿ì¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç background process¸¦ ¼öÇà ÇÒ ¼ö¾øÀ¸¸ç,console
 ¿¡¼­ kadb¸¦ ¼öÇàÇÏ°í ÀÖ´Â »ç¶÷¿Ü¿£ system¿¡ accessÇÒ ¼ö ¾ø´Ù.

 = adb hardware & software requirements 
  
 adb¸¦ »ç¿ëÇÏ¿© savecore files¸¦ ºÐ¼®ÇϱâÀ§ÇØ savecore files¸¦ °°Àº kernel arch.
 ¿Í °°Àº operating system release¸¦ °¡Áø systemÀ¸·Î ¿Å±â´Â °ÍÀÌ ÃÖ¼±ÀÌ°í °¡Àå
 °£´ÜÇÑ ¹æ¹ýÀÌ´Ù. ¹°·Ð crashedµÈ ½Ã½ºÅÛ ÀÚü¿¡¼­µµ systemÀÌ backupµÇ°í running
 ÇÑ´Ù´Â °ÍÀ» °¡Á¤ÇÏ¿¡ ºÐ¼®ÀÌ °¡´ÉÇÏ´Ù. (note- libraries,programs,directory µîÀÇ
 Á¶ÀÛÀ» ÅëÇØ ´Ù¸¥ kernel arch¿Í OS·ÎºÎÅÍ postmortem filesÀÇ ºÐ¼®ÀÌ°¡´ÉÇÏ´Ù.)
 systemÀÇ kernel architecture¿Í OS´Â /usr/ucb/arch -k ¶Ç´Â uname -a command·Î
 ¾Ë¾Æº¼ ¼ö ÀÖ´Ù.
 
 = Architecture & OS mismatched: Some adb error messages

 ¼­·Î´Ù¸¥ kernel architecture ¶Ç´Â OS·ÎºÎÅÍ kernelÀÇ crash dump»ó¿¡ adb¸¦ ½Ãµµ
 ÇÏ¸é ¾Æ·¡¿Í °°Àº ¿©·¯°¡Áö error messages¸¦ º¸°ÔµÈ´Ù.

 "Cannot adb -k: vmunix.0 : not a kernel namelist"
   SUN4/400 OS4.1.3 ÀÇ crash dump fileÀ» SS20,solaris2.3¿¡¼­ adb¸¦ ½ÇÇà

 "Cannot adb -k:unix.0: can't find swapinfo"
   SUN4d systemÀÇ crash dump fileÀ» SS20,solaris2.3¿¡¼­ adb¸¦ ½ÇÇà

 "Segmentation Fault - core dumped"
   SC2000,Solaris2.2 ÀÇ crash dump fileÀ» SS20,solaris2.3¿¡¼­ adb¸¦ ½ÇÇà

 "Cannot adb -k: vmcore.0: uncondense error on kvtopdata : Error 0"
 "Cannot adb -k: vmcore.0: unable to read kvtopdata"
   SUN4m,2.3 systemÀÇ crash dump fileÀ» SUN4m,2.2¿¡¼­ adb¸¦ ½ÇÇà

 "Cannot adb -k: cannot mmap vmcore.0's bitmap: Invalid argument"
   sun4d 2.3 crash¸¦ sun4 4.1.3¿¡¼­ adb¸¦ ½ÇÇà

 ¸¶Áö¸·À¸·Î kernel arch¿Í OS°¡ Àß matchµÈ °æ¿ì°¡ ¾Æ·¡¿¡ ÀÖ´Ù.
  ____________________________________________________________
 |                                                            |
 |   system# adb -k unix9 vmcore.9                            |
 |   physmem fd87                                             |
 |____________________________________________________________|   

 À§ ¼º°øÀûÀÎ ¿¹¿¡¼­ º¸µí adb´Â memoryÀÇ pages ÀÇ ¼ýÀÚ¸¦ display ÇÑ ÈÄ
 ¿ì¸®ÀÇ Ã¹¹ø° command¸¦ ±â´Ù¸°´Ù.

 = The distribution of adb
 
 adb programÀº solaris 1.x systems ÀÇ debugging groupÀÇ ÀϺκп¡ ¼ÓÇØÀÖ´Ù.
 Solaris 2 systems¿¡¼­´Â adb´Â º¸´Ù moduleÈ­ µÇ¾î 4°³ÀÇ packages ¿¡ ºÐ»ê
 µÇ¾î ÀÖ´Ù.(man page´Â Á¦¿Ü)
 @ SUNWcar : kadb found
 @ SUNWkvm : adb & adb macros
 @ SUNWtoo : adb °¡ /usr/bin¿¡ linkµÇ¸ç savecore¿Í strings programÀ» Æ÷ÇÔ
 @ SUNWesu : adbgen utility ¸¦ Æ÷ÇÔ adbgen Àº ÇÁ·Î±×·¡¸Ó°¡ adb macros¸¦
             ¸¸µé ¼ö ÀÖ°Ô µµ¿ÍÁÖ´Â utilityÀÌ´Ù.
 
 = The different uses of adb & kadb
 
  core ¸¦ dump½ÃŲ user programÀ» »ìÆì º¸°Å³ª crash°¡ ¹ß»ýÇÑ postmortem
  fileÀ» ½ÃÇèÇϱâ À§Çؼ­ adb¸¦ »ç¿ëÇÏ·Á¸é object file°ú core fileÀ» ÇÔ²²
  »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

 - The object file

  ½ÇÇà °¡´ÉÇÑ object fileÀº programÀ̳ª kernelÀÌ µÉ ¼ö Àִµ¥ ÀÌ fileÀº
 symbol table°ú ½ÇÇà°¡´ÉÇÑ code¸¦ ´ã°í ÀÖ´Ù.symbol tableÀº ÇÊ¿äÇÏÁö´Â
 ¾ÊÁö¸¸ ±×°ÍÀÌ ¾øÀ¸¸é adbÀÇ symbolic Ư¼ºÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù.
 default object fileÀº a.outÀÌ´Ù.

 symbol tableÀº adb ¶Ç´Â ´Ù¸¥ debugger°¡ symbolic name°ú real address¸¦
 matching ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.adb°¡ ÀüÇô °ü½ÉÀÌ ¾ø´õ¶óµµ  hexadecimal
 address º¸´Ù º¯¼ö³ª functionµéÀÌ À̸§À» °¡Áö´Â ÆíÀÌ »ç¸²µé¿¡°Ô º¸´Ù³ªÀº 
 ¹ÝÀÀÀ» ÁÙ °ÍÀÌ´Ù.
 
 - The core file

  kernelÀ̳ª programÀÇ postmortem ºÐ¼®¿¡¼­ ½ÇÆа¡ ÀϾ  ¼ø°£¿¡  
 kernelÀ̳ª ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëµÈ memory ÀÇ sanpshotÀ» ³ªÅ¸³»´Â
 image fileÀÌ core file À̸ç default´Â coreÀÌ´Ù.
 live system ÀÌ º¸¿©Áú¶§´Â core fileÀº kernel¿¡ ÀÇÇØ ÇöÀç »ç¿ëµÇ´Â memoryÀÇ
 ¹Ý¿µÀÌ´Ù.

 ¸¸¾à ¾î¶² ÀÌÀ¯·Îµç object file°ú core file Áß Çϳª¶óµµ ¾ø´Â °æ¿ì adb¸¦ 
 ÀÏÀ¸Ä×À»¶§ command line »óÀÇ ÀÚ¸®¿¡ dash "-"¸¦ ¸í½ÃÇÒ ¼ö ÀÖ´Ù.
 
 - Using adb on crash dumps

 core fileÀº errorÀÇ ¿øÀΰú À§Ä¡¸¦ ±ÔÁ¤Çϱâ À§ÇØ ½ÇÇà file °ú ÇÔ²² ½ÃÇèµÉ ¼ö
 ÀÖÀ¸¸ç adb°¡ assembly code ¿Í ÇÔ²² ÀÛ¾÷Çϱ⠶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ source code°¡
 ¾ø´õ¶óµµ ¸¹Àº ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.
 
 savecore files Àº physical memory ÀÇ Àüü³»¿ëÀÌ ¾Æ´Ï´õ¶óµµ º¸Åë ¸ðµç kernel
 data space¸¦ Æ÷ÇÔÇÑ´Ù.
 adb -k flag ´Â crash dump savecore files À̳ª live systemÀÇ ºÐ¼®¿¡ »ç¿ëµÈ´Ù.
 ¿Ö³Ä¸é adb´Â kernel data space ¿¡ ´ëÇÑ ¸¹Àº address translation ÀÛ¾÷ÀÌ ¸¹ÀÌ
 ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù.(ÁÖ-  -k flag´Â kernel memory mappingÀ» ¼öÇà;system crash
 dump ¶Ç´Â /dev/mem,¶Ç´Â sapfileÀ» »ç¿ëÇÒ ¶§ »ç¿ë)
 
 - Using adb on live systems
 
 adb´Â postmortem files¸¸ debugging µÇ´Â °ÍÀÌ ¾Æ´Ï´Ù.
 adb´Â º¸´Ù ³ªÀº performance¸¦ ¾ò±â À§Çؼ­ running systemÀ» ¼öÁ¤Çϰųª Á¶Á¤ÇÒ
 ¼ö ÀÖ´Ù.
 adb´Â ¶ÇÇÑ systemÀÇ behavior¸¦ Â÷±â boot ½Ã¿¡ ¹Ù²Ù±â À§Çؼ­ klernelÀ» ¼öÁ¤ÇÏ
 ´Âµ¥µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 default·Î adb´Â object¿Í core file¸¦ Àаųª º¼ ¼ö ¹Û¿£ ¾ø´Ù.
 ±×·¯³ª adb¸¦ ÀÏÀ¸Å³ ¶§ -w flag¸¦ ¾²°Å³ª adb¿¡¼­ $W command¸¦ ¾²¸é writeÇÒ ¼ö
 ÀÖ´Ù.
 
 - The kernel resident absolute debugger,kadb
 
 live systemÀ» debugÇÒ À§Ä¡¿¡ ÀÖ´Ù¸é kadb¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 kadb´Â operating system´ë½Å¿¡ debugger·Î ÃʱâbootingÇÏ¿© kernelÀÇ ³ª¸ÓÁö¸¦
 loadÇϰųª start½Ãų ¼ö ÀÖµµ·Ï ¸¸µé¾îÁ® ÀÖ´Ù.
 ¾î¶²°ÍÀÌ panicÀ» ÀÏÀ¸Ä×À»¶§ systemÀÌ Á×´Â »óȲ¿¡¼­ kadb´Â systemÀ» Á¢¼öÇÏ°í
 ¾ó¸¶°£ systemÀ» ¶°³¯ ¼ö ÀÖ´Ù. ÀÌ ½ÃÁ¡ÀÌ kadb °¡ ¿ì¸®¿Í ÇÔ²² ÀÏ ÇÒ Áغñ°¡ µÈ
 °ÍÀÌ´Ù.
 kadbÀÇ ´ëÈ­Àû Ư¼ºÀº ÁÖ¿äÇÑ ÀÌÁ¡ÀÌ´Ù. 
 kadb¸¦ »ç¿ëÇÏ¿© kernelÀÇ breakpoint¸¦ ¼³Á¤Çؼ­ ¸¶Ä¡ Ä¿´Ù¶õ user program°ú °°ÀÌ
 ´Ü°èÀûÀ¸·Î ½ÇÇà½ÃÅ°°í values¸¦ ¼öÁ¤ÇÏ¿© testÇÒ ¼ö ÀÖ´Ù. 
 adb¸¦ »ç¿ëÇÏ¿© postmortem files¸¦ ´Ù·ê¶§´Â À§¿Í°°Àº levelÀÇ interactionÀº Áغñ
 µÇÁö ¾Ê´Â´Ù.
 
 - adb macros & /usr/lib/adb
 
 ºñ·Ï adb°¡ ¸Å¿ì Á¦ÇÑµÈ ¸í·É¾îÀÇ setsÀ» °¡Áö°í ÀÖÁö¸¸ macros·Î ¾Ë·ÁÁø »ó´çÈ÷
 °­·ÂÇÑ ¸í·É¾îÀÇ combinations À» °¡Áö°íÀÖ´Ù.
 adb macros´Â common commandsÀÇ setÀ» ¸¸µé°í ÀúÀåÇÏ°í invokeÇÒ ¼ö ÀÖ°ÔÇϸç
 ´Ù¸¥ macro¸¦ callÇÒ ¼ö ÀÖ°Ô designµÇ¾î Á³°í ÃÖ¼ÒÀÇ ³ë·ÂÀ¸·Î °­·ÂÇÑ ºÐ¼®À» 
 °¡´ÉÄÉ ÇÑ´Ù.
 ¸¹Àº ¼öÀÇ macro files°¡ solaris 1¿¡¼­ /usr/lib/adb ¾È¿¡ ÁغñµÇ¾î ÀÖ´Ù.
 Solaris 2 systemÀº /usr/kvm/lib/adb ¿¡¼­ adb macros¸¦ ãÀ» ¼ö ÀÖ´Ù.
 ´ëºÎºÐÀÇ macros´Â SUN¿¡ ÀÇÇØ ÁغñµÇ¾î kernelÀ¸·ÎºÎÅÍ Åë»óÀûÀ¸·Î ÇÊ¿äÇÑ ±¸Á¶¸¦
 Àб⽬¿î Çü½ÄÀ¸·Î print out Çϴµ¥ »ç¿ëµÈ´Ù. 
 
 - General startup syntax
 
  -------------------------
 | adb objectfile corefile |
  -------------------------
 
 - User program debugging
 
   ----------------
  | adb a.out core |
   ----------------
   -----------------
  | adb myprogram - |
   -----------------
 user programÀ» ½ÃÇèÇϱâÀ§ÇØ adb¸¦ invoking ÇÒ¶§ÀÇ syntax´Â À§¿Í°°´Ù.
 ¸¸¾à core fileÀÌ ¸í½ÃµÇÁö ¾ÊÀ¸¸é, adb´Â ÇöÀç directoryÀÇ core fileÀ»
 ã´Â´Ù.
 core file´ë½Å "-"(dash)°¡ ¸í½ÃµÇ¸é adb´Â object fileÀ» ½ÇÇàÇϱâÀ§ÇØ
 system memory¸¦ »ç¿ëÇÑ´Ù. ÀÌ¿Í°°Àº »ç¿ë¹ýÀº ÃßÈÄ "Symbol Tables"¿¡¼­
 »ìÆ캸ÀÚ.
 executable image ¾È¿¡ symbol table ÀÌ ¾øÀ¸¸é adb´Â º¯¼ö ¶Ç´Â function
 µéÀ» À̸§¿¡ ÀÇÇØ ¸í½ÃÇÒ ¼ö ¾ø´Ù.
 ÀÌ°æ¿ì errorÀÇ À§Ä¡¸¦ ã±â°¡ ±Ø´ÜÀûÀ¸·Î ¾î·Æ´Ù.
 ¸¸¾à stack traceback ¶Ç´Â memory ÀÇ ½ÃÇè¿¡¼­ reports°¡ ¿ÀÁ÷ hexadecimal
 ·Î µÇ¾î ÀÖÀ¸¸é object file·Î ºÎÅÍ symbol tableÀÌ Á¦°ÅµÈ »óÅ°¡ ¾Æ´ÑÁö
 check Çغ¸¾Æ¾ß ÇÑ´Ù.
 symbol tableÀÇ Á¦°Å´Â UNIX strip command·Î °¡´ÉÇÏÁö¸¸ ÇѹøÁ¦°ÅµÈ
 symbol tableÀº º¹±¸°¡ ºÒ°¡´É ÇÏ´Ù.
 
 - Examining system crash dump postmortem files
 
   --------------------------
  |  adb -k unix.X vmcore.X  |
   --------------------------
 Solaris 1 system ¿¡¼­´Â object fileÀº vmunix.X ÀÌ¸ç ¿©±â±â¼­ X´Â savecore
 programÀÌ ÇÒ´çÇÑ crash numberÀÌ´Ù.
 Solaris 2 system¿¡¼­´Â object fileÀº unix.X¶ó ºÒ¸®¸ç ¿©±â¼­ÀÇ Xµµ savecore
 ¿¡ ÀÇÇØ ÇÒ´çµÈ crash numberÀÌ´Ù.
 
 - Examining a live system:Solaris 1
 
   --------------------------
  |  adb -k /vmunix /dev/mem |
   --------------------------
 
 ¿©±â¿£ crash file ÀÌ ¾øÀ¸¸ç object file Àº bootingµÇ°í ½ÇÁ¦ÀûÀÎ ½ÇÇà kernel
 ÀÎ /vmunix ÀÌ´Ù. core file ÀÎ /dev/mem Àº ÇöÀçÀÇ physical memoryÀÇ ³»¿ëÀÌ´Ù.
 
 /dev directory ¿¡´Â µÎ°³ÀÇ memory fileÀÌ ÀÖ´Ù.
 /dev/mem , /dev/kmem ÀÌ ±×°ÍÀÌ¸ç ¼­·Î´Ù¸¥ ¸ñÀûÀ¸·Î adb¿Í ÇÔ²² ¿ÀÁ÷ ÇÑ°¡Áö¸¸
 ¾²ÀδÙ.
 /dev/kmem device fileÀº ÇöÀç running kernel ¿¡ ´ëÇÑ "kernel virtual memory"
 ·Î¼­ kernel spaceÀÇ virtual address ¸¸ ¹Þ¾ÆµéÀδÙ.
 /dev/mem device fileÀº actual physical memory¿¡ ´ëÀÀµÈ´Ù.
 
 adb°¡ physical memory pagesÀÇ copy·Î ºÎÅÍ ¸¸µé¾îÁø core fileÀ» ãµµ·Ï µÇ¾î
 Á³±â ¶§¹®¿¡ data ¸¦ À§Ä¡Çϱâ À§Çؼ­ ³»ºÎÀûÀ¸·Î physical ¿¡¼­ virtual address
 translations¸¦ ÀÚµ¿À¸·Î ¼öÇàÇÑ´Ù.±×·¯¹Ç·Î physical memory¿¡ ´ëÀÀµÇ´Â fileÀ»
 adb ¿¡°Ô Á¦°øÇØ¾ß ÇÑ´Ù.
 
 - Examining a live system:Solaris 2
 
   -----------------------------
  |  adb -k /dev/ksyms /dev/mem |
   -----------------------------
 Solaris 2 systemÀº kernel level¿¡¼­ Solaris 1 system°ú ¸Å¿ì´Ù¸£´Ù.
 kernel Àº º¸´Ù moduleÈ­ µÇ¾î ´Ù¾çÇÑ Á¶°¢À¸·Î memory·Î ÀûÀçµÇ¸ç ±×°ÍÀÌ ²À
 °°Àº directory °°Àº file¿¡¼­ ¿Ã ÇÊ¿ä°¡ ¾ø´Ù.
 
 /kernel/unix ´Â Solaris 1 ÀÇ /vmunix file°ú °¡Àå ºñ½ÁÇÑ °ÍÀ¸·Î Àü°ú´Þ¸®
 systemÀÇ heart¶Ç´Â "core" ÀÌ¸ç ´Ù¸¥ loadable moduleÀ̳ª device¿¡ ´ëÇÑ 
 symbolÀº Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù.   
 »õ·Î¿î pseudo-device /dev/ksyms ´Â system¿¡ ÇöÀç ÀûÀçµÈ ¸ðµç moduleÀÇ symbol
 table ¿¡ ´ëÀÀµÈ´Ù.
 ¶ÇÇÑ /dev/ksyms device °¡ open µÇ¾úÀ»¶§ ÀûÀçµÇÁö¾ÊÀº module·Î ºÎÅÍ moduleÀ»
 º¸È£ÇÑ´Ù. ÀÌ°ÍÀº ¿ì¸®°¡ analyze ÇÏ´Â µ¿¾È symbol tableÀ» º¸ÁõÇØÁØ´Ù.
 ±×·¯³ª moduleÀÌ ¿ä±¸¿¡ ÀÇÇØ ÀûÀçµÈ ÀÌÈÄ·Î ¿ì¸®°¡ ¿©±âÀú±â µÚÁö´Â °¡¿îµ¥ ÀÌÀü¿¡
 ¿ä±¸µÇÁö ¾ÊÀº sections ¸¦ disk·ÎºÎÅÍ °¡Á®¿È¿¡ µû¶ó kernelÀº °è¼Ó size°¡ Ä¿Áú
 °ÍÀÌ´Ù. ±×·¡¼­ »õ·Î¿î symbolsÀÌ ´õÇØÁú °ÍÀ̳ª /dev/ksyms °¡ open µÇ¾î Àִµ¿¾È
 ¿¡Àü°ÍÀº »ç¶óÁöÁö ¾ÊÀ» °ÍÀÌ´Ù.
 
 = Security issues
 
 Solaris 1 system¿¡¼­´Â group 2 ( /etc/group file¿¡ kmem group ) ¿¡ Ãß°¡µÇ¾îÁø
 nonroot user´Â running kernel¿¡ adb¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª, Solaris 2 system¿¡¼±
 kernelÀ» ¼öÁ¤ÇÏ°í °Ë»çÇÒ ¼ö ÀÖµµ·Ï Çã°¡µÈ nonroot user´Â ¾ø´Ù.
 
   

Revision History

ÀÛ¼ºÀÏÀÚ : 
ÀÛ¼ºÀÚ : 

¼öÁ¤ÀÏÀÚ : 
¼öÁ¤ÀÚ :