QnA on Airac5
for expert C programmers
Airac5 ´Â ¹«¾ùÀΰ¡?
|
"Array Index Range Analyzer for C"ÀÇ ¾àÀÚ·Î ÇÁ·Î±×·¥ ºÐ¼® ±â¼úÀ»
»ç¿ëÇؼ ¸Þ¸ð¸® Á¢±Ù ¿À·ù(buffer overrun)°¡ ÀϾ ¼ö ÀÖ´Â
C ¼Ò½ºÀÇ À§Ä¡¸¦ ¹Ì¸® ¸ðµÎ ÀÚµ¿À¸·Î ã¾ÆÁÖ´Â
¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀÌ´Ù.
C ÇÁ·Î±×·¥¿¡¼ ¸Þ¸ð¸® Á¢±ÙÀº Ç×»ó ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ
³»ºÎ¿¡ ±¹ÇÑµÇ¾ß ÇÑ´Ù. Airac5´Â ÁÖ¾îÁø C ÇÁ·Î±×·¥ÀÇ ¸ðµç ½ÇÇà
»óȲÀ» ºÐ¼®Çؼ, ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ¹þ¾î³ª¼ Á¢±ÙÇÏ´Â °æ¿ì(buffer
overrun)µéÀ» ¹Ì¸® ¸ðµÎ ã¾ÆÁØ´Ù.
|
Å×½ºÆ®¿Í ¾î¶»°Ô ´Ù¸¥°¡?
|
Å×½ºÆ®ÀÇ ¹®Á¦Á¡µéÀ» º¸¿ÏÇØ ÁØ´Ù. Å×½ºÆ®´Â ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù´Â
°Í°ú, ã°íÀÚ ÇÏ´Â ¿À·ù¸¦ ¸ðµÎ ãÀ» ¼ö ¾ø´Ù´Â ¹®Á¦°¡ ÀÖ´Ù.
Airac5´Â ´ë»ó ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°Áö ¾ÊÀ¸¸é¼ ã°íÀÚ ÇÏ´Â ¿À·ùµéÀº
¸ðµÎ ã¾ÆÁØ´Ù. ÇÁ·Î±×·¥ÀÇ ¼Ò½º¸¸ ÀÖÀ¸¸é µÈ´Ù.
ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¼ö Àִ ȯ°æÀÌ ÁغñµÉ ¶§ ±îÁö ¿À·ù °ËÃâÀÌ
´ÊÃçÁö´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù. Å×½ºÆ®´Â ¶Ç À¯ÇÑ°³ÀÇ ÀԷ¿¡ ´ëÇؼ¸¸ Á¦´ë·Î
ÀÛµ¿µÈ´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» »ÓÀÌ´Ù. °¡´ÉÇÑ ÀÔ·ÂÀÌ ¹«¼öÈ÷ ¸¹´Ù¸é
Å×½ºÆ®´Â ¸ðµç »óȲÀ» Ä¿¹öÇÒ ¼ö ¾ø´Ù.
|
ÇÙ½É ±â¼úÀÌ ¹«¾ùÀΰ¡?
|
Á¤Àû ÇÁ·Î±×·¥ ºÐ¼® (static program analysis) ±â¼úÀÌ´Ù.
ÀÌ ±â¼úÀº ÁÖ¾îÁø ÇÁ·Î±×·¥ÀÇ ¸ðµç ½ÇÇà»óȲÀ» ½ÇÇàÇϱâ Àü¿¡ ¹Ì¸®
¾ö¹ÐÇÏ°Ô È®ÀÎÇÏ´Â ±â¼úÀÌ´Ù.
Á¤Àû ÇÁ·Î±×·¥ ºÐ¼®(static program analysis) ±â¼úÀº ´Ù¾çÇÑ À̸§À¸·Î
´Ù¾çÇÑ ¼öÁØ¿¡¼ ´Ù¾çÇÑ ÇÊ¿ä¿¡ ¸ÂÃß¾î °í¾ÈµÈ ¸¹Àº ±â¼úµéÀ» ¸ðµÎ Æ÷¼·ÇÑ´Ù:
"static analysis", "abstract interpretation",
"type system", "software model checking", "data-flow analysis",
"program logics and proof system" µî.
ÀÌ ±â¼úÀº Áö³ 30³â µ¿¾È ¿¬±¸°¡ ¹«¸£À;î ÀÌÁ¦ ºñ·Î¼ ½ÇÁ¦ ¿À·ù°ËÁõ¿¡
Àû¿ëµÇ±â ½ÃÀÛÇÏ¿´´Ù. ¿ì¸®´Â Áö³ 10³â ÀÌ»ó ÀÌ ºÐ¾ß ¿¬±¸¸¦ ¼öÇàÇØ¿Ô°í,
Áö³ÇØ ºÎÅÍ »ó¿ëÀ» ¸ñÇ¥·Î °³¹ßÇØ ¿Â ½Ã½ºÅÛÀÌ Airac5ÀÌ´Ù.
¿ä¾àÇؼ®(abstract interpretation) ±â¼úÀ» ±â¹ÝÀ¸·Î ÇÑ´Ù.
|
Valgrind³ª Rational PurifyPlus¿Í´Â ¾î¶»°Ô ´Ù¸¥°¡?
|
Valgrind³ª
PurifyPlus´Â ½ÇÇà½ÃÅ°¸é¼ ¿À·ù¸¦ ã¾ÆÁÖ´Â µµ±¸µéÀÌ´Ù.
Å×½ºÆ®¸¦ ÅëÇØ ¿À·ù¸¦ ã´Â °Í°ú °°´Ù.
"runtime program analysis"¶ó°í ÇÑ´Ù. Å×½ºÆ®ÀÇ ¹®Á¦Á¡µéÀ» °í½º¶õÈ÷ °¡Áø´Ù.
Airac5´Â ½ÇÇà½ÃÅ°Áö ¾Ê°í ¸ðµç ¿À·ùµéÀ» ¼Ò½º¸¦ ºÐ¼®Çؼ
ã¾ÆÁØ´Ù. "static program analysis"±â¼úÀÇ Æ¯Â¡ÀÌ´Ù.
|
±× ±â¼ú¿¡ ±â¹ÝÇÑ °æÀï Á¦Ç°µé°ú ºñ±³Çϸé?
|
Á¤Àû ÇÁ·Î±×·¥ ºÐ¼®±â¼ú¿¡ ±â¹ÝÇؼ ¿À·ù ÀÚµ¿°ËÁõ±â¿¡ ƯȵÈ
ȸ»çµéÀº ´ëÇ¥ÀûÀ¸·Î µÎ°³°¡ ÀÖ´Ù.
ÇÁ¶û½º Ecole Polytechnique Ãâ½ÅÀÇ Polyspace¿Í ¹Ì±¹ ½ºÅÄÆ÷µå´ë
Ãâ½ÅÀÇ CoverityÀÌ´Ù.
CoverityÀÇ Á¦Ç°Àº ¸ñÇ¥ÇÑ ¿À·ù(buffer overrun)¸¦ ¸ðµÎ ã¾ÆÁÖÁöµµ ¸øÇÏ°í
ÇãÀ§°æº¸µµ ÀÖ´Ù. PolyspaceÀÇ Á¦Ç°Àº ºÐ¼®ºñ¿ëÀÌ Å©°í ÇãÀ§°æº¸°¡ ¸¹´Ù.
Airac5´Â Coverity°¡ ã¾Æ³»´Â ¿À·ù¸¦ Æ÷ÇÔÇؼ Coverity°¡
³õÄ¡´Â °Í±îÁö ¸ðµÎ ã¾ÆÁÖ°í, Polyspaceº¸´Ù´Â ºÐ¼®ºñ¿ë°ú ÇãÀ§°æº¸°¡
Àû´Ù.
Airac5 ȨÀ» ¹æ¹®Çϸé
Airac5 ÀÚüÀÇ ¼º´É»Ó ¾Æ´Ï¶ó Coverity¿ÍÀÇ ºñ±³ ¼º´ÉÀ» »ìÆ캼 ¼ö ÀÖ´Ù.
|
Á¦ÇÑÁ¡À̳ª ¼ûÀº ºñ¿ëÀº?
|
´ë»ó ¿À·ùµéÀÌ ÀÖÀ¸¸é ¸ðµÎ ã¾ÆÁÖÁö¸¸, ½ÇÁ¦ ¿À·ù°¡
¾Æ´Ñµ¥µµ ¿À·ù¶ó°í ÆÇ´ÜÇÏ´Â °æ¿ì(false alarm)°¡ ÀÖ´Ù.
¿¹¸¦µé¾î, ½ÇÁ¦ ¿À·ù°¡ 10±ºµ¥¶ó¸é ±× Àå¼ÒµéÀ» Æ÷ÇÔÇؼ 15±ºµ¥¸¦
ã¾ÆÁÖ´Â °ÝÀÌ´Ù.
ÀÌ·¯ÇÑ ÇãÀ§°æº¸¸¦ 0°³·Î ÁÙÀÌ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù.
¿À·ù¶ó°í ÆÇÁ¤µÈ ÁöÁ¡¸¶´Ù ÇãÀ§°æº¸ÀÎÁö ¾Æ´ÑÁö¸¦ »ç¶÷ÀÌ È®ÀÎÇÏ´Â °úÁ¤Àº
ÇÊ¿äÇÏ´Ù.
|
C++ Ç¥ÁØ ¶óÀ̺귯¸®³ª Java¿¡¼ ½ÇÇàÁß ¿¹¿Ü¸¦
¹ß»ý½ÃÄÑÁÖ´Â °Í°ú ´Ù¸¥°¡?
| ±× ¹æ½ÄÀº ¿¡·¯°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¹Ì¿¬¿¡ ¹æÁöÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó
½ÇÇà Áß¿¡ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ ¿¹¿Ü¸¦ ¹ß»ý½ÃÅ°°í ÇÁ·Î±×·¡¸Ó´Â ±×·¯ÇÑ
¿¹¿Ü»óȲÀ» Àß Ã³¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·Î±×·¥ÇØ¾ß ÇÑ´Ù.
¶ÇÇÑ, ±×·± ¹æ½ÄÀº ¾ÈÀü¼ºÀ» º¸ÀåÇϱâ À§ÇØ ½ÇÇà Áß¿¡ ¸Þ¸ð¸® Á¢±Ù ¹üÀ§¸¦
¸Å¹ø °Ë»çÇϱ⠶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ Àüü ½ÇÇà ¼Óµµ°¡ ´À·ÁÁø´Ù.
|
mallocÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸® °ø°£¿¡ ´ëÇؼµµ ºÐ¼®Çϴ°¡?
| ¹°·ÐÀÌ´Ù. ¹è¿·Î ¼±¾ðµÇÁö ¾ÊÀº ÇÒ´çµÈ ¸Þ¸ð¸® °ø°£µé¿¡ ´ëÇؼµµ ±×
¹üÀ§¸¦ ¹þ¾î³ª´Â ¿À·ù(buffer overrun)¸¦ ã¾ÆÁÖ¸ç, ¸Þ¸ð¸® °ø°£¿¡
Á¢±ÙÇÏ´Â ´Ù¾çÇÑ ¹æ¹ý¿¡ ´ëÇؼµµ ¸ðµÎ ó¸®ÇÑ´Ù. |
ANSI C·Î Â¥¿©Áø ¸ðµç ÇÁ·Î±×·¥À» Áö¿øÇϴ°¡?
| ¸ðµç ANSI C ÇÁ·Î±×·¥À» Áö¿øÇÑ´Ù. |
µ¥¸ó(demon) ÇÁ·Î±×·¥Ã³·³ ½ÇÇàÀÌ ³¡³ªÁö ¾Ê´Â ÇÁ·Î±×·¥¿¡ ´ëÇؼ´Â?
| Airac5´Â ½ÇÇàÀÌ ³¡³ªÁö ¾Ê´Â ÇÁ·Î±×·¥¿¡ ´ëÇؼµµ À¯ÇÑÇÑ ½Ã°£ ³»¿¡
Ç×»ó ºÐ¼®À» ¸¶Ä£´Ù. |
ÀÎÅÍ·´Æ® Çڵ鷯(interrupt handler) ¸¦ »ç¿ëÇÏ´Â
°æ¿ìµµ °¡´ÉÇÑ°¡?
| ±×·¸´Ù. ÇØ´ç C ¼Ò½ºµéÀÌ ¸ðµÎ Àֱ⸸ ÇÏ¸é µÈ´Ù. |
º´·Ä ¾²·¹µå(thread)µéÀ» °¡Áö´Â C ÇÁ·Î±×·¥µµ ºÐ¼® °¡´ÉÇÑ°¡?
|
º´·Ä ¾²·¹µåµéÀÌ ¼·Î ±³Â÷(dependence/interference)ÇÏ¸é¼ »ý±æ ¼ö ÀÖ´Â
¸Þ¸ð¸® Á¢±Ù ¿À·ùµéÀº ãÁö ¸øÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª, °³º° ¾²·¹µåµéÀÌ
µ¶¸³ÀûÀ¸·Î °¡Áú ¼ö ÀÖ´Â ¿À·ù´Â ¸ðµÎ ã´Â´Ù. |
ÀԷ°ªÀ̳ª ¿ÜºÎ ÀÚ·á¿¡ ÀÇÇØ Á¿ìµÇ´Â ¸Þ¸ð¸® Á¢±ÙÀº ¾î¶»°Ô
󸮵dzª?
| ÀԷ°ªÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò´Ù¸é °¡´ÉÇÑ ¸ðµç °æ¿ì¸¦ °í·ÁÇÑ ºÐ¼®°á°ú¸¦
³»³õ´Â´Ù. ¸¸¾à ¿Ã¹Ù¸£Áö ¾ÊÀº ÀԷ°ªÀÌ µé¾î¿ÔÀ» ¶§ ±× °ªÀ» »ç¿ëÇÏÁö
¾Ê°Ô ÇÏ´Â ·çƾÀÌ Æ÷ÇԵǾî ÀÖ´Ù¸é ¿Ã¹Ù¸¥ ÀԷ°ªÀ¸·Î ÆÇÁ¤µÇ¾î ½ÇÁ¦
¼öÇàµÇ´Â °æ¿ì¸¸À» °í·ÁÇÏ¿© ºÐ¼®ÇÑ´Ù. |
ºÐ¼® ¼Óµµ´Â ¾ó¸¶³ª µÇ´Â°¡?
| ´ë°Ô ÄÄÆÄÀÏ·¯ ¼ÓµµÀÇ 50¹è À̳»°í, ´õ ¸¹Àº ½Ã°£ÀÌ °É¸®´Â °æ¿ìµµ ÀÖ´Ù.
ºÐ¼® ¼Óµµ´Â ÄÄÆÄÀÏ ¼Óµµ¿Í ´Þ¸® ÇÁ·Î±×·¥ ¼Ò½ºÀÇ Å©±â¿¡ ºñ·ÊÇÏÁö ¾Ê°í
³í¸®Àû º¹Àâµµ¿¡ ºñ·ÊÇÑ´Ù. µû¶ó¼, ÀÛÀº ¼Ò½ºÀÌÁö¸¸ ºÐ¼®ÀÌ ¿À·¡°É¸± ¼ö ÀÖ°í
Å©Áö¸¸ »¡¸® ³¡³¯ ¼ö ÀÖ´Ù.
Airac5 Ȩ¸¦ ¹æ¹®ÇÏ¸é ±¸Ã¼ÀûÀÎ ¼º´É µ¥ÀÌŸ¸¦
»ìÆ캼 ¼ö ÀÖ´Ù. ±×°÷¿¡¼ ¿Â¶óÀÎ µ¥¸ð¸¦ ÇØ º¼ ¼öµµ ÀÖ°í, ½ÇÁ¦·Î ³»·Á¹Þ¾Æ
»ç¿ëÇØ º¼ ¼öµµ ÀÖ´Ù. |
Àüü ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Å©´Ù¸é »ç¿ëÇϱâ ÈûµéÁö ¾Ê³ª?
| ÄÄÆÄÀÏ·¯°¡ ¸ðµâȸ¦ Áö¿øÇϱâ À§ÇØ °³º° ÆÄÀÏ¿¡ ´ëÇØ ÄÄÆÄÀÏÇÒ ¼ö
ÀÖµíÀÌ Airac5µµ °³º° ÆÄÀÏ ´ÜÀ§·Î °Ë»çÇÒ ¼ö ÀÖ´Ù. |
¾ó¸¶³ª Å« ÆÄÀϱîÁö ºÐ¼®ÇÒ ¼ö Àִ°¡?
| ºÐ¼® °úÁ¤¿¡¼ ¸Þ¸ð¸®ÀÇ Á¦¾àÀÌ ÀÖÀ¸³ª ÀÎÅÚ ÆæƼ¾ö4 3.2GHz 4GB RAM
ȯ°æ¿¡¼ ¾à 1¸¸ ¶óÀÎÀÇ ¼Ò½ºÆÄÀÏÀ» ÇÑ ¹ø¿¡ ºÐ¼® °¡´ÉÇÏ´Ù. ´ëÇü
ÇÁ·Î±×·¥ÀÇ °æ¿ì °¢ °³º° ÆÄÀÏ, ¶Ç´Â ¼Ò½ºÀÇ ºÎºÐ º°·Î ºÐ¼®À» ¼öÇàÇÒ ¼ö
Àֱ⠶§¹®¿¡ »ç½Ç»ó Å« Á¦¾àÀº ¾ø´Ù. |
±×·¸´Ù¸é, ¿©·¯ ÆÄÀÏ·Î ±¸¼ºµÈ ÇÁ·Î±×·¥ ¼Ò½º¸¦ ±×´ë·Î »ç¿ëÇÒ ¼ö
ÀÖ´Ù´Â ¸»Àΰ¡?
| ÀϹÝÀûÀ¸·Î
±×·¸´Ù. Makefile ÀÌ ÀÖ´Ù¸é Airac5 ÀÌ ¾Ë¾Æ¼ ÇÊ¿äÇÑ ÆÄÀÏÀ»
ã¾Æ main ÇÔ¼öºÎÅÍ ºÐ¼®À» ½ÃÀÛÇÏ°Ô µÈ´Ù. ¸¸¾à main ÇÔ¼ö°¡ ¾ø´Â
°æ¿ì¿¡´Â °¡»óÀÇ È£Ã⠽󪸮¿À¸¦ °®Ãá main ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù.
Makefile ÀÌ ¾ø´Ù¸é *.c ÆÄÀϵéÀ» Àüó¸® ÇÑ ÈÄÀÇ
¼Ò½ºÄڵ带 ÀÔ·ÂÀ¸·Î ÁÖ¸é µÈ´Ù. |
Airac5ÀÇ ºÐ¼®°á°ú ¿À·ù·Î ÁöÀûµÈ ºÎºÐÀÌ ½ÇÁ¦·Î´Â ¿À·ù°¡ ¾Æ´Ï¾ú´Ù.
¾î¶°ÇÑ Çö»óÀΰ¡?
| ¸ðµç »óȲÀ» À¯ÇÑÇÏ°Ô Æ÷¼·ÇÏ´Ùº¸¸é, ¿À·ùÀÎÁö¸¦ È®½ÇÈ÷ ¾Ë ¼ö ¾ø´Â °æ¿ì°¡
ÀÖ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ¾ÈÀüÇÑ °á·ÐÀ» À§Çؼ ¿À·ù°¡ ÀÖ´Â °ÍÀ¸·Î ÆǺ°ÇÑ´Ù.
|
Airac5ÀÇ ±×·¯ÇÑ ÇãÀ§ °æº¸(false
alarm)¸¦ ¾î¶»°Ô ±¸º°ÇÒ ¼ö Àִ°¡?
|
Airac5°¡ ÀÚµ¿À¸·Î ¿Ïº®ÇÏ°Ô ±¸º°ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù.
´ë½Å¿¡, ¿À·ù °æº¸µéÀÌ ÁøÂ¥ÀÏ È®·üÀ» °è»êÇؼ °¡Àå ³ôÀº È®·üÀ» °¡Áø ¿À·ù °æº¸µé
ºÎÅÍ »ç¿ëÀÚ°¡ »ìÆ캸µµ·Ï ÇÑ´Ù.
°ø°³¹öÁ¯¿¡¼´Â ã¾ÆÁø ¿À·ùµé Áß¿¡¼ ÁøÂ¥ ¿À·ùÀÏ È®·üÀÌ °¡Àå ³ôÀº
»óÀ§ 5°³ÀÇ ¿À·ù¸¸ º¸¿©ÁØ´Ù. Ç® ¹öÁ¯Àº ¸ðµç ¿À·ùµéÀ» ÁøÂ¥ÀÏ È®·üÀÇ ¼ø¼´ë·Î
º¸¿©ÁØ´Ù. |
½ÃÇèÀûÀ¸·Î »ç¿ë °¡´ÉÇÑ°¡?
|
Airac5 Ȩ ¿¡¼ ½ÇÇàÈÀÏÀ» ³»·Á¹Þ¾Æ »ç¿ëÇØ º¼ ¼ö ÀÖ´Ù.
¿Â¶óÀÎ µ¥¸ðµµ ±×°÷¿¡¼ Á¦°øµÈ´Ù.
°ø°³µÈ ¹öÁ¯Àº ½ÇÁ¦ ¹öÁ¯º¸´Ù Á¦ÇÑÁ¡ÀÌ ÀÖ´Ù. ºÐ¼®ÇÒ ¼ö ÀÖ´Â ¼Ò½ºÀÇ
Å©±â°¡ ÇÁ·Î½ÃÁ® 100°³ À̳»¿©¾ß ÇÏ°í, ºÐ¼®°á°ú ã¾ÆÁø ¿À·ùµéÁß¿¡¼
5°³¸¸ ¾Ë·ÁÁØ´Ù.
|
¿ÏÀüÇÑ ¹öÁ¯À» »ç¿ëÇÏ·Á¸é?
|
´Ù¾çÇÑ ¶óÀ̼¾½º °è¾àÀ» ÅëÇØ ±¸¸ÅÇÒ ¼ö ÀÖ´Ù. Airac5 ÀÚü»Ó
¾Æ´Ï¶ó Àå±âÀûÀÎ "whole product service"¸¦ ±¸¸ÅÇÒ ¼ö ÀÖ´Ù.
¿¬¶ôó.
|
|