๋””๋ฒ„๊น…


๋””๋ฒ„๊น…์€ ์˜ค๋ฅ˜์˜ ์›์ธ์„ ์ฐพ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ตฌ๋™๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŠน์„ฑ์ƒ ํ”Œ๋žซํผ ๋ณ„๋กœ ๋””๋ฒ„๊น… ๋„๊ตฌ๊ฐ€ ๋‹ค์–‘ํ•˜๊ณ , ์‚ฌ์šฉ๋ฒ•๋„ ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต "์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์€ ์–ด๋ ต๋‹ค"๊ณ  ๋งํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น… ๋„๊ตฌ๊ฐ€ ๋งŽ์ด ๋ฐœ์ „ํ–ˆ๊ณ , ํŠนํžˆ ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ๋Œ€๋ถ€๋ถ„ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ๊ณผ UI๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๋””๋ฒ„๊น… ๋„๊ตฌ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ค‘์‹ฌ์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””๋ฒ„๊น… ํ™˜๊ฒฝ์ด ์กฐ๊ธˆ ๋‹ค๋ฅธ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ(์ดํ•˜ IE) ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋„ ์„ค๋ช…ํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋Š” ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ์—์„œ ์ข€ ๋” ์ƒ์„ธํžˆ ๋‹ค๋ฃจ๊ธฐ๋กœ ํ•œ๋‹ค.

๋ชฉ์ฐจ

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ํ˜„์žฌ ์ „ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋””๋ฒ„๊น… ๋„๊ตฌ์ด๊ณ , ๊ฐ€์žฅ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. Chromium(ํฌ๋กฌ์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์˜คํŽ˜๋ผ๋„ ํฌ๋กฌ๊ณผ ๊ฐ™์€ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.ย ์ด ๊ฐ€์ด๋“œ๋Š” ํฌ๋กฌ 70๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์ฃผ์š” ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•œ๋‹ค. ๊ทธ ์™ธ ๊ธฐ๋Šฅ์€ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์‹คํ–‰ ๋ฐฉ๋ฒ•

  • ํฌ๋กฌ ๋ฉ”๋‰ด์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

    • [๋„๊ตฌ ๋”๋ณด๊ธฐ] โ†’ [๊ฐœ๋ฐœ์ž ๋„๊ตฌ] ์„ ํƒ
  • ์›น ํŽ˜์ด์ง€ ์ƒ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

    • ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ ํด๋ฆญ(์ดํ•˜ ์šฐํด๋ฆญ) โ†’ [๊ฒ€์‚ฌ] ์„ ํƒ
  • ๋‹จ์ถ•ํ‚ค๋กœ ์‹คํ–‰ํ•˜๊ธฐ

    • Ctrl + Shift + I (์œˆ๋„์šฐ)
    • Cmd + Opt + I (๋งฅ)

Sources ํƒญ ๊ธฐ๋Šฅ ์„ค๋ช…

Sources ํƒญ์—์„œ๋Š” ํŽ˜์ด์ง€์— ๋กœ๋“œ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ ๋กœ๋“œ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์€ Sources ํƒญ ํ™”๋ฉด์ด๋‹ค. ์™ผํŽธ์—๋Š” ๋กœ๋“œ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์˜ ํด๋” ํŠธ๋ฆฌ๊ฐ€, ์ค‘์•™์—๋Š” ์†Œ์Šค์ฝ”๋“œ๊ฐ€, ์˜ค๋ฅธํŽธ์—๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๋ฒ„ํŠผ๊ณผ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.

source_tab

์œ„์˜ ๊ทธ๋ฆผ์˜ ๊ฐ ๋ฒˆํ˜ธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1 ) ์ค„ ๋ฒˆํ˜ธ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•œ๋‹ค. ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ์ค„ ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค. 2 ) ์‹คํ–‰์ด ์ค‘๋‹จ๋œ ์ƒํƒœ์—์„œ ๊ฐ ๋ฒ„ํŠผ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜์—ฌ ์Šคํ… ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 3 ) ๋””๋ฒ„๊น… ์‹œ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด๋ฅผ Watch์— ๋“ฑ๋กํ•˜์—ฌ ์ค‘๋‹จ ์‹œ์ ์— ์–ด๋–ค ๊ฐ’์„ ๊ฐ€์กŒ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 4 ) ์›น ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ค‘๋‹จ๋œ ์ˆœ๊ฐ„๊นŒ์ง€์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์Šคํƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜ธ์ถœ ์Šคํƒ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์–‘ํ•œ ์ค‘๋‹จ์  ์„ค์ • ๋ฐฉ๋ฒ•

๋Œ€๊ฐœ Sources ํƒญ์—์„œ ์›ํ•˜๋Š” ์ค„ ๋ฒˆํ˜ธ์— ์ค‘๋‹จ์ ์„ ๊ฑธ์–ด์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋””๋ฒ„๊น…์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์œ„์น˜๊ฐ€ ์•„๋‹Œ ํŠน์ • ์ƒํ™ฉ์—์„œ ์ค‘๋‹จ์ ์„ ๊ฑธ๊ณ  ์‹ถ์€ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ์ฝ”๋“œ์˜ ํŠน์ • ์œ„์น˜๋ฅผ ์„ ํƒํ•˜๊ธฐ ์–ด๋ ค์šด ์ˆœ๊ฐ„์—๋„ ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

Event Listener Breakpoints

ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์„ ๋””๋ฒ„๊น…ํ•˜๊ณ  ์‹ถ์„ ๋•Œ Event Listener Breakpoints๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ฆญ ์ด๋ฒคํŠธ์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๋ฉด, DOM์— ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค. Sources ํƒญ โ†’ [Event Listener Breakpoints]์—์„œ ์›ํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ค‘๋‹จ์ ์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ์ดํ›„์— ์ค‘๋‹จ์ ์œผ๋กœ ์„ค์ •ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค.

event_breakpoint

์กฐ๊ฑด๋ถ€ ์ค‘๋‹จ์ 

Sources ํƒญ์—์„œ ์›ํ•˜๋Š” ์ฝ”๋“œ์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ๋ฐ, ์ง€์ •ํ•œ ์กฐ๊ฑด์—์„œ๋งŒ ์‹คํ–‰์„ ์ค‘๋‹จํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์—์„œ ํŠน์ • ๊ฐ’์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ์ˆœ๊ฐ„์ด๋‚˜ ๋ฃจํ”„์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ์ˆœ๊ฐ„ ๋“ฑ์—์„œ ์กฐ๊ฑด๋ถ€ ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์›ํ•˜๋Š” ์ฝ”๋“œ ์ค„ ๋ฒˆํ˜ธ์—์„œ ์šฐํด๋ฆญ โ†’ [Add conditional breakpoint]์„ ์„ ํƒํ•˜๋ฉด, ์›ํ•˜๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

conditional_breakpoint1

ํ•„์š”ํ•œ ์กฐ๊ฑด์„ ์ฝ”๋“œ๋กœ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค.

conditional_breakpoint2

DOM ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ์ค‘๋‹จ์ 

ํŠน์ • DOM์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํŠน์ • DOM์ด๋‚˜ ์ž์‹ ๋…ธ๋“œ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ์‹คํ–‰์„ ์ค‘๋‹จํ•œ๋‹ค. Elements ํƒญ โ†’ ์›ํ•˜๋Š” element์—์„œ ์šฐํด๋ฆญ โ†’ [Break on]์„ ์„ ํƒํ•˜๋ฉด, ์„ธ ๊ฐ€์ง€ ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ค๊ณ  ์ด ์ค‘์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จ์ ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

dom_breakpoint

Ajax ์ค‘๋‹จ์ 

ํŠน์ • ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” Ajax ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ  ์‹ถ์„ ๋•Œ Ajax๋ฅผ ์ค‘๋‹จ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Ajax ํ˜ธ์ถœ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์ง€๋งŒ ์–ด๋–ค ์ฝ”๋“œ์—์„œ ์š”์ฒญํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ํž˜๋“  ์ƒํ™ฉ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Source ํƒญ โ†’ [XHR/Fetch Breakpoints]์—์„œ ์›ํ•˜๋Š” ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํŒจํ„ด์˜ Ajax ํ˜ธ์ถœ์ด ์ผ์–ด๋‚œ ์ฝ”๋“œ์—์„œ ์‹คํ–‰์ด ์ค‘๋‹จ๋œ๋‹ค.

ajax_breakpoint

๋ธ”๋ž™๋ฐ•์Šค ์„ค์ • ๋ฐฉ๋ฒ•

์Šคํƒญ ๋””๋ฒ„๊น…์œผ๋กœ ๋””๋ฒ„๊น…์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋กœ ๋””๋ฒ„๊น… ํฌ์ธํŠธ๊ฐ€ ์ด๋™ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ฒ ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ๋กœ์ง์„ ๋””๋ฒ„๊น…ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ ์Šคํƒญ ๋””๋ฒ„๊น…์—์„œ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋””๋ฒ„๊น… ๋Œ€์ƒ์ด ์•„๋‹Œ ํŒŒ์ผ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์™ธ๋ถ€ ํŒŒ์ผ ๋“ฑ)์„ ๋ธ”๋ž™๋ฐ•์Šค ์ฒ˜๋ฆฌํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋Ÿผ ํ˜ธ์ถœ ์Šคํƒ์—๋Š” ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋‚จ์•„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์— ์ง‘์ค‘ํ•ด์„œ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€์ด๋‹ค.

์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๋กœ ์„ค์ •ํ•˜๊ธฐ

Sources ํƒญ์—์„œ ๋ธ”๋ž™๋ฐ•์Šค๋กœ ์ฒ˜๋ฆฌํ•  ํŒŒ์ผ์„ ์—ด๊ณ , ์šฐํด๋ฆญํ•˜์—ฌ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด [Blackbox Script]๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋˜๋Š” Call Stack์—์„œ๋„ ์šฐํด๋ฆญ์œผ๋กœ [Blackbox Script]๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

blackbox1

Settings ๋ฉ”๋‰ด์—์„œ ์„ค์ •ํ•˜๊ธฐ

[Settings] ๋ฉ”๋‰ด โ†’ Blackboxing ํƒญ์—์„œ ๋ธ”๋ž™๋ฐ•์Šค ์ฒ˜๋ฆฌํ•  ํŒŒ์ผ์„ ์ถ”๊ฐ€ ํ•œ๋‹ค.

blackbox2

๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ํ™•์ธ

Performance ํƒญ๊ณผ Memory ํƒญ์€ ์„ฑ๋Šฅ ์ €ํ•˜ ์š”์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ [FE ๊ฐ€์ด๋“œ] ์„ฑ๋Šฅ์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ ์—์„œ ์„ฑ๋Šฅ ๊ฐœ์„  ํฌ์ธํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. Memory ํƒญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ด ์„ธ ๊ฐ€์ง€ ํ”„๋กœํŒŒ์ผ๋ง์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ฉฐ ๋””๋ฒ„๊น…์„ ํ•ด์•ผํ•  ๋•Œ, ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด์ž.

memory1

ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ํ™•์ธ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋™ ์‹œ์— ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์—๋Š” ๋ณ€์ˆ˜, ๊ฐ์ฒด, ํด๋กœ์ € ๋“ฑ์ด ์žˆ๊ณ , ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํšŒ์ˆ˜ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ฐธ์กฐ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ๋‚จ์•„์žˆ๋Š” ๊ฐ์ฒด๋Š” ํšŒ์ˆ˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚จ์•„ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. [Heap snapshot] ํ”„๋กœํŒŒ์ผ๋ง ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํž™ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

memory_heap_snapshots

์œ„์˜ ๊ทธ๋ฆผ์€ ๋‘ ๊ฐœ์˜ ํž™ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜์—ฌ ๋น„๊ตํ•œ ํ™”๋ฉด์ด๋‹ค. Snapshot 1์€ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ๋˜๊ณ  ํž™ ์Šค๋ƒ…์ƒท์„ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๊ณ , Snapshot 2์€ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ดํ›„ ์—ฌ๋Ÿฌ ๋™์ž‘์„ ํ•œ ๋’ค ํž™ ์Šค๋ƒ…์ƒท์„ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋•Œ Snapshot 2ํ™”๋ฉด์—์„œ ๋นจ๊ฐ„ ๋ฐ•์Šค ํ•ญ๋ชฉ์„ Comparison์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด Snapshot 2๋ฅผ ๊ธฐ์ค€์„ Snapshot 1๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„์ •์ƒ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ํ•ด์ œ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”์ง€ ๋‘ Snapshot ๋น„๊ต ๊ฒฐ๊ณผ๋กœ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž„๋ผ์ธ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ ํ™•์ธ

ํƒ€์ž„๋ผ์ธ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ณ€ํ™”๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” [Allocation instrumentation on timeline]์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋™์ž‘ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์€ ํƒ€์ž„๋ผ์ธ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•œ ๊ฒƒ์œผ๋กœ ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋Š” ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์–‘์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํŒŒ๋ž€์ƒ‰ ๋ง‰๋Œ€๋ฅผ ํ† ๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ์ฆ๊ฐ€ ํ˜น์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์ด ์ผ์–ด๋‚˜์ง€๋Š” ์•Š๋Š”์ง€ ๋“ฑ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์ด๋ฅผ ํ™•์ธํ•œ๋‹ค.

memory_timeline

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์‹œ์  ์ฐพ๊ธฐ

[Allocation sampling]์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์‹œ์ ์„ ๊ธฐ๋กํ•œ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ•จ์ˆ˜๋ณ„ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋‚ด์—ญ์„ ๋ณด์—ฌ์ฃผ๊ณ , ๊ฐ€์žฅ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ํ•จ์ˆ˜๋ถ€ํ„ฐ ๋‚˜์—ดํ•ด์ฃผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

allocation samplling

๋ชจ๋ฐ”์ผ ๋””๋ฒ„๊น…

๋ชจ๋ฐ”์ผ์—์„œ ์‹คํ–‰๋œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋‹ˆ ๋ง‰๋ง‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํฌ๋กฌ์ด๋‚˜ ์‚ฌํŒŒ๋ฆฌ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ฐ”์ผ์˜ ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์›น๋ทฐ์—์„œ ๊ตฌ๋™๋œ ํŽ˜์ด์ง€๋ฅผ PC์—์„œ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ๋Š” ํฌ๋กฌ์„, iOS ๊ธฐ๊ธฐ๋Š” ์‚ฌํŒŒ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›๊ฒฉ ๋””๋ฒ„๊น…์„ ํ•œ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์›น ํŽ˜์ด์ง€ ๋””๋ฒ„๊น…

ํฌ๋กฌ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…์œผ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์›น๋ทฐ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋Š” ์›น๋ทฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์— ์„ค์ •์ด ๋”ฐ๋กœ ํ•„์š”ํ•˜๋ฏ€๋กœ ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

์ค€๋น„์‚ฌํ•ญ

  • ํฌ๋กฌ 32๋ฒ„์ „ ์ด์ƒ
  • ์•ˆ๋“œ๋กœ์ด๋“œ 4๋ฒ„์ „(์•„์ด์Šคํฌ๋ฆผ ์ƒŒ๋“œ์œ„์น˜) ์ด์ƒ
  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ์— ํฌ๋กฌ ์„ค์น˜
  • ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์— ์•ˆ๋“œ๋กœ์ด๋“œ USB ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜
  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ์™€ ์—ฐ๊ฒฐํ•  USB ์ผ€์ด๋ธ”

์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ์—์„œ ์„ค์ •ํ•  ๊ฒƒ

  • [Settings] โ†’ [Developer Options] โ†’ [Enable USB Debugging]์„ ์„ค์ •ํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์™€ USB ์ผ€์ด๋ธ”๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์—์„œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ

๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์—์„œ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ด์–ด [More tools] โ†’ [Remote devices]๋ฅผ ์„ ํƒํ•œ๋‹ค.

remote_debugging1

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฐ๊ฒฐ๋œ ๊ธฐ๊ธฐ ์ •๋ณด๊ฐ€ ์™ผ์ชฝ์— ํ‘œ์‹œ๋˜๊ณ  ํ•ด๋‹น ๊ธฐ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ํฌ๋กฌ์— ์—ด๋ ค์žˆ๋Š” ๋งํฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

remote_debugging2

๋””๋ฒ„๊น…ํ•  ํŽ˜์ด์ง€์˜ [Inspect] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋””๋ฒ„๊น…์„ ํ•œ๋‹ค.

iOS ์›น ํŽ˜์ด์ง€ ๋””๋ฒ„๊น…

์‚ฌํŒŒ๋ฆฌ์˜ ์›๊ฒฉ ๋””๋ฒ„๊น…์œผ๋กœ iOS ๊ธฐ๊ธฐ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

์ค€๋น„์‚ฌํ•ญ

  • iOS 6 ์ด์ƒ์ด ์„ค์น˜๋œ ๊ธฐ๊ธฐ
  • ๋งฅ OS๊ฐ€ ์„ค์น˜๋œ ๊ธฐ๊ธฐ
  • iOS ๊ธฐ๊ธฐ์™€ ๋งฅ OS ๊ธฐ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ผ€์ด๋ธ”

iOS ๊ธฐ๊ธฐ์—์„œ ์„ค์ •ํ•  ๊ฒƒ

  • [Settings] โ†’ [Safari] โ†’ [Advanced]์—์„œ [Web Inspector] ์„ค์ •์„ ์ผœ๋‘”๋‹ค.
  • ๋งฅ๊ณผ ์•„์ดํฐ์„ ์ผ€์ด๋ธ”๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์—์„œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ

๊ฐœ๋ฐœ์šฉ ์ปดํ“จํ„ฐ์—์„œ ์‚ฌํŒŒ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , [Safari] โ†’ [Preferences] โ†’ [Advanced] โ†’ [Show Develop menu in menu bar]๋ฅผ ์„ค์ •ํ•œ๋‹ค.

safari_remote_debugging1

๊ทธ๋Ÿผ ๋ฉ”๋‰ดํ‘œ์‹œ์ค„์— Develop(๊ฐœ๋ฐœ์ž์šฉ) ๋ฉ”๋‰ด๊ฐ€ ์ƒ๊ธฐ๊ณ , ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ๋œ ์•„์ดํฐ ๊ธฐ๊ธฐ์˜ ์‹คํ–‰ ์ค‘์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜น์‹œ ์—ฐ๊ฒฐ๋œ ์•„์ดํฐ ๊ธฐ๊ธฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์•„์ดํฐ์˜ ์‚ฌํŒŒ๋ฆฌ ๋ฒ„์ „๊ณผ ๋งฅ OS์˜ ์‚ฌํŒŒ๋ฆฌ ๋ฒ„์ „์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฐ™์€ ๋ฒ„์ „์œผ๋กœ ๋งž์ถฐ์ค€๋‹ค.

safari_remote_debugging_2

๋””๋ฒ„๊น…ํ•˜๊ณ ์ž ํ•˜๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ์•„์ดํฐ ๊ธฐ๊ธฐ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๋””๋ฒ„๊น…ํ•œ๋‹ค.

safari_remote_debugging_3

iphone_debugging

ํ”„๋ฝ์‹œ๋ฅผ ํ†ตํ•œ ๋””๋ฒ„๊น…

ํŠน์ • ํŒจํ‚ท์„ ์กฐ์ž‘ํ•˜์—ฌ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋‹ค๋ฅด๊ฒŒ ๋ฐ›๊ฑฐ๋‚˜, ์„œ๋ฒ„์— ๋ฐฐํฌ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๊ต์ฒดํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์„ ๋•Œ Fiddler๋‚˜ Charles์™€ ๊ฐ™์€ ํ”„๋ฝ์‹œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ”„๋ฝ์‹œ ๋„๊ตฌ๋Š” PC์˜ ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์„œ๋ฒ„์™€์˜ ์š”์ฒญ/์‘๋‹ต์— ์ค‘๋‹จ์ (Breakpoints)์„ ๊ฑธ์–ด ํŒจํ‚ท์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋ฝ์‹œ ๋„๊ตฌ๋กœ ์ด๋ฏธ ์„œ๋ฒ„์— ๋ฐฐํฌ๋˜์–ด ์„œ๋น„์Šค ์ค‘์ธ ํŽ˜์ด์ง€์˜ ํŒŒ์ผ(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ, CSS ํŒŒ์ผ ๋“ฑ)์„ ์›ํ•˜๋Š” ํŒŒ์ผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Fiddler์™€ Charles๋ฅผ ์˜ˆ์‹œ๋กœ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด๋ณด๊ณ , ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์ด ์™ธ์˜ ๋งŽ์€ ๊ธฐ๋Šฅ์€ Fiddler์˜ ๊ณต์‹ ๋ฌธ์„œ์™€ Charles์˜ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Fiddler

Fiddler๋กœ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๊ธฐ๋กํ•˜๊ณ  ์กฐํšŒํ•˜๋ฉฐ, ์„œ๋ฒ„ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์น˜ ํŒŒ์ผ์€ ๊ณต์‹ ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ํŠน๋ณ„ํ•œ ์„ค์ • ์—†์ด [๋‹ค์Œ] ๋ฒ„ํŠผ์„ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ•œ๋‹ค.

ํŠธ๋ž˜ํ”ฝ ์บก์ฒ˜

ํŠธ๋ž˜ํ”ฝ ์บก์ฒ˜๋Š” Fiddler์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ Fiddler๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํŠธ๋ž˜ํ”ฝ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

Fiddler_1

ํ•˜์ง€๋งŒ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์บก์ฒ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค. ์ด๋Ÿด ๋•Œ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์œผ๋กœ ์›ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ์บก์ฒ˜ํ•œ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋งŒ ์บก์ฒ˜ํ•˜๋„๋ก ์„ค์ •ํ•œ ์˜ˆ์ œ์ด๋‹ค.

Fiddler_2

Fiddler_3

AutoResponder๋กœ ์‘๋‹ต ๋ณ€๊ฒฝํ•˜๊ธฐ

AutoResponder๋Š” Fiddler์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ, ํŠน์ • ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์— ๋ฐฐํฌ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ CSS ํŒŒ์ผ ๋“ฑ์„ ์›ํ•˜๋Š” ํŒŒ์ผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A ์‚ฌ์ดํŠธ์—์„œ config.js์˜ ํŒŒ์ผ์„ ์ž„์‹œ๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์šฐ์„  config.js๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์ฒดํฌ ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ AutoResponder๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค.

Fiddler_4

AutoResponder๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ๋‹ค๋ฉด, ์ขŒ์ธก ํŠธ๋ž˜ํ”ฝ ์˜์—ญ์—์„œ ์‘๋‹ต์„ ๋ณ€๊ฒฝํ•  ์š”์ฒญ์„ ์„ ํƒํ•œ ํ›„ [Add Rule] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‘๋‹ต ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

Fiddler_5

๋งŒ์ผ ๋ณ€๊ฒฝ ํ•  ์š”์ฒญ์„ ์ •๊ทœ์‹์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด "regex: ์ •๊ทœ์‹"์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

Fiddler_6

์š”์ฒญ ์„ค์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‘๋‹ต ์ž…๋ ฅ๋ž€์„ ํด๋ฆญํ•˜์—ฌ ์‘๋‹ต ๊ทœ์น™์„ ์„ค์ •ํ•œ๋‹ค.

Fiddler_7

[Find a file]์„ ์„ ํƒํ•˜๋ฉด ์‘๋‹ต์œผ๋กœ ๋Œ€์ฒดํ•  ํŒŒ์ผ์„ ํƒ์ƒ‰๊ธฐ์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋กœ์ปฌ์—์„œ ์ˆ˜์ •ํ•œ config.js ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  [Save] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด, ์ง€์ •ํ•œ ํŒŒ์ผ๋กœ ์‘๋‹ต์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์ผ ์ง€์ •ํ•œ ํŒŒ์ผ๋กœ ์‘๋‹ต์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณธ๋‹ค.

Fiddler_8

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

Fiddler๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  PC๋ฅผ ๋Œ ๊ฒฝ์šฐ, ๋‹ค์Œ ๋ถ€ํŒ… ์‹œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด์—ˆ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๋•Œ๋Š” Fiddler๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๋ฉด ๋œ๋‹ค.

Fiddler_9

Charles

ํ˜„์žฌ๊นŒ์ง€ OSX์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ฝ์‹œ ๋„๊ตฌ์ด๋‹ค. Fiddler์˜ AutoResponder์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” Map Local/Map Remote์™€ ์„ธ์…˜ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. HTTP์™€ HTTPS๋ฅผ ์ง€์›ํ•˜๊ณ , ์„ธ์…˜์„ ์ˆœ์„œ ์œ„์ฃผ๋กœ ๋ณด๋Š” Sequence ํƒญ๊ณผ ์ฃผ์†Œ ์œ„์ฃผ๋กœ ๋ณด๋Š” Structure ํƒญ์ด ์žˆ๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

์„ค์น˜

๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์„ค์น˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์œ ๋ฃŒ ๋ผ์ด์„ผ์Šค์ด๋ฏ€๋กœ ๋ณ„๋„ ๊ตฌ๋งค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์„ค์น˜ ํ›„ Charles๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ”„๋ฝ์‹œ๊ฐ€ ์„ค์ •๋œ๋‹ค. ๋งŒ์•ฝ ์•ˆ ๋  ๊ฒฝ์šฐ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ [Proxy] โ†’ [Proxy Settings] ๋ฉ”๋‰ด์—์„œ HTTP Proxy์˜ Port๊ฐ€ ํ˜„์žฌ PC์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํฌํŠธ์™€ ๊ฒน์น˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋˜๋Š” Mac OS X ํƒญ์—์„œ [Enable Mac OS X proxy]๊ฐ€ ์ œ๋Œ€๋กœ ์ฒดํฌ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ PC์—์„œ VPN์ด ์„ค์ •๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ VPN์ด ๋™์ž‘ํ•˜๊ณ  ์žˆ์œผ๋ฉด ์„ธ์…˜์ด ์บก์ฒ˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ด ๋ถ€๋ถ„๋„ ์ฐธ๊ณ ํ•˜๋ฉด ๋„์›€์ด ๋œ๋‹ค.

charles_proxy_setting

์„ธ์…˜ ๋ชฉ๋ก ๋ณด๊ธฐ

Charles์—์„œ๋Š” ์„ธ์…˜ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ Sequence์™€ Structure ํƒญ์„ ์ œ๊ณตํ•œ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํƒญ์—์„œ ์„ธ์…˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค. ๊ฐ ํƒญ์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

Sequence

Fiddler์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋“  ์š”์ฒญ์„ ์‹œ๊ฐ„์ˆœ์œผ๋กœ ์Œ“์•„ ๋ณด์—ฌ ์ค€๋‹ค. ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋น ๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

charles_sequence

Structure

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

charles_structure

๋ณดํ†ต ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ ์‹œ์˜ ๋ฌธ์ œ๋Š” ํ•œ ๋„๋ฉ”์ธ ๋‚ด์—์„œ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— Structure๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์™œ๋ƒํ•˜๋ฉด API๋ฅผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์„ธ์…˜์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์„ธ์…˜ ์ƒ์„ธ ๋ณด๊ธฐ

์„ธ์…˜ ์ƒ์„ธ ๋ณด๊ธฐ๋Š” ์ด 5๊ฐœ์˜ ํƒญ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ ํƒญ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Overview ํƒญ

์„ธ์…˜์˜ ์ •๋ณด๋ฅผ ๊ฐ„๋žตํžˆ ๋ณด๋Š” ํƒญ์œผ๋กœ ์š”์ฒญ, ์‘๋‹ต, ํƒ€์ด๋ฐ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

charles_overview

Contents ํƒญ

์„ธ์…˜์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ๋‹จ์ด ์š”์ฒญ๋‚ด์šฉ์ด๊ณ  ํ•˜๋‹จ์ด ์‘๋‹ต ๋‚ด์šฉ์ด๋‹ค. ๋‹จ์ผ ํŒŒ์ผ ์š”์ฒญ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹จ์ˆœํ•˜๋‚˜ JSON๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ •๋ ฌ๋œ ๋ชจ์–‘์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

charles_content

Summary ํƒญ

์„ธ์…˜์˜ ์ •๋ณด๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ํƒญ์œผ๋กœ ๋‹จ์ผ ์„ธ์…˜์„ ๋ณด๋Š” ์šฉ๋„๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ ์„ธ์…˜๊ณผ ๋น„๊ตํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

charles_summary

Chart ํƒญ

์„ธ์…˜์˜ ํƒ€์ž„๋ผ์ธ์„ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

charles_chart

Note ํƒญ

์„ธ์…˜์— ๋ฉ”๋ชจ๋ฅผ ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

charles_note

Map Local๋กœ ์‘๋‹ต ๋ณ€๊ฒฝํ•˜๊ธฐ

Fiddler์˜ AutoResponder์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋กœ์ปฌ์˜ ํŠน์ • ํŒŒ์ผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  ์„ธ์…˜ ์ค‘ ๋กœ์ปฌ ํŒŒ์ผ๋กœ ์‘๋‹ต์„ ๋Œ€์ฒดํ•˜๊ณ  ์‹ถ์€ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค. ์˜ˆ์‹œ๋กœ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์—์„œ basic_dummy.js ํŒŒ์ผ์„ ๋กœ์ปฌ ํŒŒ์ผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

charles_map_local_1

basic_dummy.js ํŒŒ์ผ์—์„œ ์šฐํด๋ฆญํ•˜์—ฌ Map Local์„ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋Œ€์ฒดํ•  ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” Edit Mapping ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์—ฌ๊ธฐ์„œ [Choose] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋Œ€์ฒดํ•  ๋กœ์ปฌ ํŒŒ์ผ์„ ์„ ํƒํ•œ๋‹ค.

charles_map_local_edit_mapping

ํ˜น์€ ๋ฉ”๋‰ด์˜ [Tools] โ†’ [Map Local]์„ ์„ ํƒํ•˜์—ฌ Map Local Settings ์ฐฝ์—์„œ ๋งตํ•‘ ํ•  ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. Enable Map Local์„ ์ฒดํฌํ•˜๊ณ  [Add] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋งตํ•‘ ํ•  ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

charles_map_local_setting

Map Remote๋กœ ์š”์ฒญ ๋ณ€๊ฒฝํ•˜๊ธฐ

ํŠน์ • ์š”์ฒญ์„ ๋‹ค๋ฅธ ์š”์ฒญ์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. Map Local๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋Œ€์ฒดํ•  ํŒŒ์ผ์„ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์š”์ฒญ ์ž์ฒด๋ฅผ ๋‹ค๋ฅธ ์š”์ฒญ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ Map Local๊ณผ ๊ฐ™์ด ์šฐํด๋ฆญํ•˜์—ฌ Map Remote ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Edit Mapping ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ํ•˜๋‹จ์˜ Map To ๋‚ด์šฉ์„ ๋Œ€์ฒดํ•  ์š”์ฒญ์œผ๋กœ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค.

charles_map_remote_edit_mapping

ํ˜น์€ ๋ฉ”๋‰ด์—์„œ [Tools] โ†’ [Map Remote]๋ฅผ ์„ ํƒํ•˜์—ฌ Map Remote Settings ์ฐฝ์—์„œ ๋งตํ•‘ํ•  ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. Enable Map Remote๋ฅผ ์ฒดํฌํ•˜๊ณ  [Add] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋งตํ•‘ํ•  ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

charles_map_remote_settings

IE ๊ฐœ๋ฐœ์ž ๋„๊ตฌ

IE8 ๋ฏธ๋งŒ

IE8 ๋ฏธ๋งŒ์€ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ Debug Bar๋ผ๋Š” ๋ณ„๋„์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. Debug Bar๋Š” Companions.JS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌด๋ฃŒ ๋„๊ตฌ๋กœ IE์—์„œ console ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. DebugBar ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์„ค์น˜ ๋งค๋‰ด์–ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

IE8 ~ IE11 ๊ทธ๋ฆฌ๊ณ  ์—ฃ์ง€

IE8๋ถ€ํ„ฐ๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋„๊ตฌ ๋ฉ”๋‰ด๋‚˜ F12 ํ‚ค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ € ํ•˜๋‹จ์— ํ™”๋ฉด์ด ๋ถ„๋ฆฌ๋˜์–ด ๋‚˜ํƒ€๋‚œ๋‹ค. IE8 ์ด์ƒ๊ณผ ์—ฃ์ง€์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋Š” ์•ž์„œ ์„ค๋ช…ํ•œ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์™€ ์œ ์‚ฌํ•˜๋ฏ€๋กœ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ƒ๋žตํ•˜๊ฒ ๋‹ค. (์ฐธ๊ณ : IE ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ, ์—ฃ์ง€ ๊ฐœ๋ฐœ์ž๋„๊ตฌ ๋ฌธ์„œ)

ie_dev_tool2

๊ฐ€์ƒ ๋จธ์‹ 

2013๋…„๋„ Microsoft์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ IE ๋ฒ„์ „์„ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด modern IE๋ฅผ ๋‚ด๋†“์•˜๋‹ค. modern IE๋Š” IE6๋ถ€ํ„ฐ IE11๊นŒ์ง€์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ํ•˜์ง€๋งŒ 2015๋…„์— ์—ฃ์ง€๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ฐœํ‘œํ•˜๋ฉด์„œ ๋”๋Š” modern.IE๋ผ๋Š” ๋ช…์นญ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. modern IE๋กœ ์ ‘์† ์‹œ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋˜๊ณ , ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” IE์˜ ๋ฒ„์ „๋„ 8๋ถ€ํ„ฐ 11๊นŒ์ง€๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฃ์ง€์˜ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€๋„ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. 2018๋…„ 9์›” ํ˜„์žฌ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹  ๋„๊ตฌ๋Š” Virtual Box, Vagrant, VMware, Hyper-V, Parallelsย ์ด๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์œˆ๋„์šฐ๊ฐ€ ์•„๋‹Œ๋ฐ IE ๋””๋ฒ„๊น…์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์œˆ๋„์šฐ ๋ฒ„์ „์—์„œ์˜ IE ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๊ฐ€์ƒ๋จธ์‹ ์„ ์‚ฌ์šฉํ•ด์„œ IE๋ฅผ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” Virtual Box๋กœ IE8 ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. Virtual Box๋Š” ๋‹จ์ˆœ ํ…Œ์ŠคํŒ… ์šฉ๋„๋กœ๋Š” ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ์™ธ์˜ ์‚ฌ์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ๋ผ์ด์„ ์Šค ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

VirtualBox ๊ฐ€์ƒ ๋จธ์‹  ํ”Œ๋žซํผ ์„ค์น˜

VirtualBox ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ์ž์‹  PC์˜ OS์— ํ•ด๋‹นํ•˜๋Š” ์„ค์น˜ ํŒŒ์ผ๋กœ ์„ค์น˜ํ•œ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹  ํ•˜๋‚˜๋‹น ํฌ๊ธฐ๊ฐ€ 1G ์ด์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ€์ƒ ๋จธ์‹ ์ด ์„ค์น˜๋  ๊ฒฝ๋กœ๋ฅผ ์šฉ๋Ÿ‰์ด ๋„‰๋„‰ํ•œ ์œ„์น˜๋กœ ์ง€์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

VM1

๊ฐ€์ƒ ๋จธ์‹  ๋‹ค์šด๋กœ๋“œ

๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ์—์„œ ์„ค์น˜ํ•˜๊ณ ์ž ํ•˜๋Š” OS์™€ IE ๋ฒ„์ „์„ ์„ ํƒํ•œ ๋’ค Select Platform์„ "VirtualBox"๋กœ ์„ ํƒํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

modernIE_download

๊ตฌ๋™ํ•˜๊ธฐ

VirtualBox์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ๋™ํ•˜๋ฉด ๋œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ€์ƒ ์‹œ์Šคํ…œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œํ•œ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค.

VM2

ํ˜„์žฌ PC์˜ RAM ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ•„์š”ํ•  ๊ฒฝ์šฐ ๊ฐ€์ƒ ๋จธ์‹ ์˜ RAM์„ ์กฐ์ •ํ•œ๋‹ค.

VM3

์„ค์ •์„ ๋งˆ์น˜๋ฉด ์‹œ์Šคํ…œ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ๋ชจ๋‘ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ช‡ ๋ถ„์ด ์†Œ์š”๋œ๋‹ค.

VM4

๋ชจ๋‘ ์™„๋ฃŒ ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ํƒํ•œ ๊ฐ€์ƒ ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋˜๊ณ , ํ•ด๋‹น ๊ฐ€์ƒ ์‹œ์Šคํ…œ์„ ๋”๋ธ”ํด๋ฆญํ•˜๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์ด ๊ตฌ๋™๋œ๋‹ค.

virtual_machine

๋งบ์Œ๋ง

๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์™€ ํ”„๋ฝ์‹œ ๋„๊ตฌ ๋ฐ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ ๋””๋ฒ„๊น…๊นŒ์ง€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์›น์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๋งŽ์•„์ง€๋ฉด์„œ ๋””๋ฒ„๊น…์˜ ํ˜•ํƒœ์™€ ๋ฐฉ๋ฒ•์ด ๋‹ค์–‘ํ•ด์ง€๊ณ  ์žˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ ๋‹ค๋ฃจ๋Š” ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•๋งŒ ์ตํ˜€๋„ ํšจ์œจ์ ์ธ ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด ๊ฐ€์ด๋“œ๊ฐ€ ๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.


์ด ๋ฌธ์„œ๋Š” NHN Cloud์˜ FE๊ฐœ๋ฐœ๋žฉ์—์„œ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ณต์‹ ์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ์ด๋‹ค. ๊ฐ€์ด๋“œ ์ ์šฉ ๊ด€๋ จ ๋ฌธ์˜๋‚˜ ๋ฌธ์„œ์˜ ์˜ค๋ฅ˜, ๊ฐœ์„  ์ œ์•ˆ์€ ๊ณต์‹ ๋ฌธ์˜ ์ฑ„๋„(dl_javascript@nhn.com)์„ ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค.


Last Modified
2019. 05. 07
FE Development LabBack to list