๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/JAVA

[์ƒํ™œ์ฝ”๋”ฉ] JAVA1 - 10. ๋””๋ฒ„๊ฑฐ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 9. 13.

 

 

์ƒํ™œ์ฝ”๋”ฉ JAVA1

-  ๋””๋ฒ„๊ฑฐ -

 


 

๋””๋ฒ„๊ฑฐ๋ฅผ ์ด์šฉํ•ด ์ฝ”๋”ฉ์˜ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ํŒŒ์•…ํ•ด๋ณด์ž.

 

bug (๋ฒ„๊ทธ)

์šฐ๋ฆฌ๊ฐ€ ์ง  ์ฝ”๋“œ์˜ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ

 

debugging (๋””๋ฒ„๊น…)

๋ฒ„๊ทธ๋ฅผ ์žก๋Š” ํ–‰์œ„

 

debugger (๋””๋ฒ„๊ฑฐ)

๋””๋ฒ„๊น…์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ

 

๋งŒ์•ฝ ์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‹ถ์„๋•Œ ์šฐ๋ฆฌ๋Š” ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑด ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ์ค‘๊ฐ„์— ๋ฉˆ์ถฐ์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ง„ํ–‰์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ์„ ์ค‘๊ฐ„์— ๋ฉˆ์ถ”๋Š” ๋ฐฉ๋ฒ•์€ ์ผ๋‹จ ๋‚ด๊ฐ€ ๋ฉˆ์ถ”๊ณ  ์‹ถ์€ ์ฝ”๋“œ์—์„œ ๋”๋ธ”ํด๋ฆญ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ ์ด ์ƒ๊ธฐ๋Š”๋ฐ ์ด ์ ์„ break pointer๋ผ๊ณ  ํ•œ๋‹ค.

์ด ์ ์€ ๋”๋ธ”ํด๋ฆญ์œผ๋กœ ์ƒ๊ฒผ๋‹ค ์—†์•ด๋‹ค ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋””๋ฒ„๊น…์„ ํ•˜๋‹ค๊ฐ€ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์€ ์œ„์น˜๋ฅผ ์žฌ์„ค์ •ํ•˜๊ณ  ์‹ถ์œผ๋ฉด break pointer๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์ง„ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฐ ๋‹ค์Œ์— ๋””๋ฒ„๊ทธ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋˜๋Š”๋ฐ RUN๋ฒ„ํŠผ์€ ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹คํ–‰์‹œํ‚ฌ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

๋””๋ฒ„๊ทธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด๋Ÿฐ์ฐฝ์ด ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ Perspective๋ฅผ ๋””๋ฒ„๊ทธ๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค.

 

Perspective๋Š” ๊ด€์ ์ด๋ผ๋Š” ๋œป์ด ์žˆ๋Š”๋ฐ JAVA๋ฒ„ํŠผ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉด JAVA๋ฅผ ํ•  ๋•Œ ๋ณด๊ธฐ์ข‹๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๊ณ , Debug์— ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉด ๋””๋ฒ„๊น…์„ ํ•  ๋•Œ ๋ณด๊ธฐ์ข‹๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ์ผ์ข…์˜ ํ…Œ๋งˆ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์•„๊นŒ ์ฐฝ์—์„œ Perspective๋ฅผ ๋””๋ฒ„๊ทธ๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ๋‚ด์šฉ์€ ๋””๋ฒ„๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ๋‚ด์šฉ์ด๊ธฐ๋•Œ๋ฌธ์— Switch๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ํ™”๋ฉด ๊ตฌ์„ฑ์ด ๋ณ€๊ฒฝ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Perspective ๋ฒ„ํŠผ์€ ์šฐ์ธก ์ƒ๋‹จ์— ์žˆ์œผ๋ฉฐ, ๋งŒ์•ฝ JAVA๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด ๋””๋ฒ„๊น…์„ ์ข…๋ฃŒํ•œ ๋‹ค์Œ JAVA๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.

 

9๋ฒˆ์งธ ์ค„์— ๋…น์ƒ‰ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ๋˜์–ด์žˆ๋Š”๊ฑด ์•„๊นŒ์ „์— ํ•ด๋‹น๋ผ์ธ์— break pointer๋ฅผ ๊ฑธ์–ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น ์ฝ”๋“œ์— ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์šฐ์ธก์— Variables๋Š” ๋””๋ฒ„๊น…ํ•œ ๊ณณ๊นŒ์ง€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋‚˜ ๋ณ€์ˆ˜์•ˆ์— ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์ฐฝ์€ ๋””๋ฒ„๊น…์„ ๊ณ„์†ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ๋“ค์ด๊ฑฐ๋‚˜ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ• ๋•Œ๋งˆ๋‹ค ๋‚ด์šฉ์ด ์ฑ„์›Œ์ง€๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ์ขŒ์ธก์—๋Š” ํ˜„์žฌ ๋‚ด๊ฐ€ ๋””๋ฒ„๊น…ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ •๋ณด์™€ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š” ๋ผ์ธ์ด ๋ช‡๋ฒˆ์งธ ์ธ์ง€๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋””๋ฒ„๊น…์„ ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ„ํŠผ์œผ๋กœ ์ž˜ ์•Œ๊ณ  ์žˆ๋„๋ก ํ•œ๋‹ค.

 

Resume : ๋””๋ฒ„๊น… ์ง„ํ–‰์‹œ, break pointer๋ฅผ ์„ค์ •ํ•ด ๋†“์€ ๊ณณ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์„ ์ง„ํ–‰์‹œํ‚ด

Terminate : ๋””๋ฒ„๊น… ์ข…๋ฃŒ

Step Into : ํ•ด๋‹น ์ฝ”๋“œ ๋ผ์ธ์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ํ™•์ธ๊ฐ€๋Šฅ

Step Over : ๋ช…๋ น์–ด ํ•˜๋‚˜๋งŒ ์‹คํ–‰

Step Return : Step Into ๋ฉ”์†Œ๋“œ์˜ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ๋’ค ์ด์ „์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€