๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ ์‹๋ณ„์„ ์œ„ํ•œ ํˆดํ‚ท์ธ Valgrind 3.15.0 ์ถœ์‹œ

์‚ฌ์šฉ ๊ฐ€๋Šฅ ์„๋ฐฉํ•˜๋‹ค ๋ฐœ๊ทธ๋ฆฌ๋“œ 3.15.0, ๋ฉ”๋ชจ๋ฆฌ ๋””๋ฒ„๊น…, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ์ง€ ๋ฐ ํ”„๋กœํŒŒ์ผ๋ง์„ ์œ„ํ•œ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. Valgrind๋Š” Linux(X86, AMD64, ARM32, ARM64, PPC32, PPC64BE, PPC64LE, S390X, MIPS32, MIPS64), Android(ARM, ARM64, MIPS32, X86), Solaris(X86, AMD64) ๋ฐ macOS(AMD64) ํ”Œ๋žซํผ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ...

ะ’ ์ƒˆ๋กœ์šด ๋ฒ„์ „:

  • ๋งŽ์€ ์žฌ ์ž‘์—… ํž™ ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ์ธ DHAT(Dynamic Heap Analysis Tool)์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ ํž™์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜, ๊ณผ๋„ํ•œ ํž™ ํ™œ๋™, ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๋‹จ๊ธฐ ํ• ๋‹น ๋ฐ ํž™์˜ ๋น„ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ—˜์  ๊ฐœ๋ฐœ ๋ฒ”์ฃผ์—์„œ DHAT๋Š” ํ‘œ์ค€ Valgrind ํˆดํ‚ท์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(์‹คํ–‰ํ•˜๋ ค๋ฉด ์ด์ œ "--tool=exp-dhat" ๋Œ€์‹  "-tool=dhat" ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ).

    ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ฐœ์„  ์‚ฌํ•ญ์€ DHAT์— ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์™„๋ฃŒํ•œ ํ›„ DHAT๋Š” ์ด์ œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ •๋ณด์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์š”์•ฝ๋งŒ ํ‘œ์‹œํ•˜๊ณ  ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ „์ฒด ๋ณด๊ณ ์„œ๋ฅผ ํŒŒ์ผ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๋” ์ด์ƒ ๋ ˆ์ฝ”๋“œ๋กœ ๊ทธ๋ฃนํ™”๋˜์ง€ ์•Š๊ณ  ์Šคํƒ ์ถ”์  ํŠธ๋ฆฌ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ–‰๋œ ์ธก์ • ์ˆ˜๊ฐ€ ํ™•์žฅ๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋‹ˆํ„ฐ๋ง๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ถ”๊ฐ€ ๋ฒ”์ฃผ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ก๋œ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋ ค๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ํŠน์ˆ˜ ๋ทฐ์–ด dh_view.html์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

    ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ ์‹๋ณ„์„ ์œ„ํ•œ ํˆดํ‚ท์ธ Valgrind 3.15.0 ์ถœ์‹œ

  • amd64(x86_64) ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ํ™•์žฅ ๋ช…๋ น์–ด ์„ธํŠธ RDRAND ๋ฐ F16C์— ๋Œ€ํ•œ ์ง€์›์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • Cachegrind์™€ Callgrind๋Š” ์นด์šดํ„ฐ ๊ฐ’์„ ๋ฐฑ๋ถ„์œจ๋กœ ํ‘œ์‹œํ•˜๋Š” ์ƒˆ๋กœ์šด ์˜ต์…˜ "โ€”show-percs"๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Linux, Android ๋ฐ Solari์šฉ Massif์—์„œ๋Š” "--read-inline-info" ๋ชจ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, macOS์˜ ๊ฒฝ์šฐ ๋ช…์‹œ์ ์ธ "--read-inline-info=yes"๊ฐ€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Memcheck์—์„œ "--xtree-leak=yes" ์˜ต์…˜(๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ xtree ํ˜•์‹์œผ๋กœ ํ‘œ์‹œ)์„ ์ง€์ •ํ•˜๋ฉด ์ด์ œ "--show-leak-kinds=all" ์˜ต์…˜์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ํ—ˆ์œ„ ๊ฒฝ๋ณด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ์™„๋ฃŒ ํ›„ ๊ฐ์ง€๋œ ์˜ค๋ฅ˜ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด "--show-error-list=no|yes" ์˜ต์…˜๊ณผ "--show-error-list=yes"์— ํ•ด๋‹นํ•˜๋Š” ์˜ต์…˜ "-s"๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์„ธ๋ถ€ ์ถœ๋ ฅ ๋ชจ๋“œ์ธ "-v -v"์—์„œ๋„ ์œ ์‚ฌํ•œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋˜์—ˆ์ง€๋งŒ ์ด ๋ชจ๋“œ์˜ ์ถœ๋ ฅ์€ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ์–ด์ˆ˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€