๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์„ค์ •

์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - ๋””๋ฒ„๊น…(Debugging) ํ•˜๊ธฐ

by ์ฃผ๋ฐœ2 2021. 10. 10.
๋ฐ˜์‘ํ˜•

๐Ÿ“Ž  ๊ธ€๋˜ 6๊ธฐ ํฌ์ŠคํŒ…

1. ๋ฏธ์น˜๋„๋ก ๋”์› ๋˜ 7์›”์˜ ํšŒ๊ณ 

 

2. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•  ๋•Œ์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ

 

3. Spring AOP - (1) ํ”„๋ก์‹œ ํŒจํ„ด, ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด

 

4. [MySQL] - ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation level)

 

5. Spring AOP - (2) AOP ๊ฐœ๋… ๋ฐ ์‹ค์Šต

 

6. ์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - ๋””๋ฒ„๊น…(Debugging) ํ•˜๊ธฐ

 

7. [Java, ๋””์ž์ธํŒจํ„ด] - ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton Pattern)

 

8. ์›”๊ฐ„ ์ฝ”๋“œ๋ฆฌ๋ทฐ Ver_0.1: ์ปค๋ฆฌ์–ด ์„ฑ์žฅ CODE ์„ธ๋ฏธ๋‚˜ ์ •๋ฆฌ

 

9. ํฌ์ŠคํŠธ๋งจ(API ํ…Œ์ŠคํŠธ) ํ™œ์šฉํ•˜๊ธฐ

 

10. ๋œป๊นŠ์€ 2021๋…„ ํšŒ๊ณ 


 

๐Ÿ“Ž  ์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - ๋””๋ฒ„๊น…(Debugging)ํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ๋””๋ฒ„๊น… ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

๋จผ์ € ๋””๋ฒ„๊น…์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋””๋ฒ„๊น…(debugging) ๋˜๋Š” ๋””๋ฒ„๊ทธ(debug)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋‹จ๊ณ„ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๋…ผ๋ฆฌ์ ์ธ ์˜ค๋ฅ˜๋‚˜ ๋น„์ •์ƒ์  ์—ฐ์‚ฐ(๋ฒ„๊ทธ)๋ฅผ ์ฐพ์•„๋‚ด์„œ ๊ทธ ์›์ธ์„ ๋ฐํžˆ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—… ๊ณผ์ •์„ ๋œปํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋””๋ฒ„๊น…์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธ ์ƒ์˜ ์ฒดํฌ, ๊ธฐ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฒ•์ด ์žˆ๋‹ค.

์ถœ์ฒ˜: ์œ„ํ‚ค๋ฐฑ๊ณผ

 

๋””๋ฒ„๊น…์„ ์ž˜ ํ•˜๋Š” ๋Šฅ๋ ฅ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ •๋ง ์ค‘์š”ํ•˜๋‹ค ๋ผ๋Š” ์–ธ๊ธ‰์„ ๋งŽ์ด ๋“ค์–ด์™”์—ˆ์Šต๋‹ˆ๋‹ค.

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

 

๋” ๋‚˜์€ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๋Š” ํŒ "๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋””๋ฒ„๊ฑฐ ์‚ฌ์šฉ๋ฒ•์€ ๊ผญ ์•Œ์•„์•ผ์ฃ "

์ฝ”๋”ฉ์˜ ์‹œ์ž‘๊ณผ ๋, ๋””๋ฒ„๊น… | ์‹ค๋ ฅ์žˆ๋Š” ๊ฐœ๋ฐœ์ž์˜ ํ•„์ˆ˜ ๋ฌด๊ธฐ ๐Ÿ›๐Ÿž

 

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

 

 

 

๐ŸŽฏ ๋””๋ฒ„๊น… ์ƒํ™ฉ

ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ์™€ ์†Œ์…œ๋กœ๊ทธ์ธ(google)์„ ๊ตฌํ˜„ํ•˜๋Š” ์ผ๋ถ€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

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

๋”ฐ๋ผ์„œ ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ํ•ด๋‹น ์ฝ”๋“œ์—์„œ ๊ฐ ๋ณ€์ˆ˜๋“ค์ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

authentication ๋ณ€์ˆ˜์— authorizedClientRegistrationId ๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ’์œผ๋กœ "google" ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Authentication์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ , OAuth2AuthenticationToken์€ ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค.

Authentication ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” authorizedClientRegistrationId ๋ณ€์ˆ˜๋ฅผ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— OAuth2AuthenticationToken ์ž๋ฃŒํ˜•์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Authentication ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด์ธ OAuth2AuthenticationToken ํด๋ž˜์Šค์— ์กด์žฌํ•˜๋Š” getAuthorizedClientRegistrationId() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ธ์ฆ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ๋Š” ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ธ์ฆ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

final String socialType = ((OAuth2AuthenticationToken) authentication).getAuthorizedClientRegistrationId();

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

 

๋””๋ฒ„๊น…์ด ์•„๋‹Œ ๋กœ๊ทธ๋‚˜ System.out.println() ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋ฌธ์„ ํ†ตํ•ด ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด (์ €๋ผ๋ฉด) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•  ๊ฒƒ ๊ฐ™๋„ค์š”.

๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ•˜๋‚˜ํ•˜๋‚˜ ํ™•์ธํ•ด๊ฐ€๋ฉด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„์˜ฌ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๊ฐ„์ ์ธ ๋น„์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•ž์œผ๋ก  ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ์‹œ๊ฐ„์„ ์•„๊ปด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค :)

์ถœ์ฒ˜: https://blog.isusystem.com/blog/debugging-and-test/

 

 

 

๐ŸŽฏ ์ธํ…”๋ฆฌ์ œ์ด ๋””๋ฒ„๊น…

๋จผ์ € ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋Š” ์šฐ์ธก ์ƒ๋‹จ ๋ฒŒ๋ ˆ ํ‘œ์‹œ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋‹จ์ถ•ํ‚ค๋Š” ํ˜„์žฌ ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๊ณณ์€ Ctrl + Shift + D, ์ƒ๋‹จ ํƒญ์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์€ Crtl + D ์ž…๋‹ˆ๋‹ค.)

 

 

๋””๋ฒ„๊ทธ๋Š” ์ฝ”๋“œ์ƒ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•จ์œผ๋กœ์„œ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ(breakpoint), ์ค‘๋‹จ์ , ์ค‘์ง€์ ์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋„์ ์œผ๋กœ ์ž ์‹œ ๋˜๋Š” ์•„์˜ˆ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ์žฅ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ : ์œ„ํ‚ค

 

๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋Š” ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ฝ”๋“œ ์™ผ์ชฝ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”๊ณณ์— ๋งˆ์šฐ์Šค ์™ผ์ชฝ์„ ํด๋ฆญํ•˜๋ฉด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

ํ”„๋กœ์ ํŠธ์—์„œ ํ˜„์žฌ ์„ค์ •ํ•œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์ƒ๋‹จ์— Run > View Breakpoints...(Shift + Command + F8) ๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Breakpoint ํ™•์ธ

 

 

๋””๋ฒ„๊น… ๋ชจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๊ฝค ๋งŽ์€ ์•„์ด์ฝ˜๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. 

์ €๋„ ๊ทธ๋™์•ˆ ์ฃผ๋กœ Step Over๋‚˜  Step Into, Step Out์ •๋„๋งŒ ์‚ฌ์šฉ์„ ํ•ด์™”์—ˆ๋Š”๋ฐ์š”, ์ด๋ฒˆ ๊ธฐํšŒ์— ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ

(์ €๋Š” ์•„์ด์ฝ˜์„ ์ปค์Šคํ…€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ์ธํ…”๋ฆฌ์ œ์ด๋ผ๋„ ์•„์ด์ฝ˜ ๋ชจ์–‘์€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

 

 

Resume(Option + Command + R)

  • ๋‹ค์Œ Break Point๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

์œ„ ์ปค์„œ์—์„œ Resume๋ฅผ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜ ๋‹ค์Œ Break Point๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

 


Show Execution Point(Option + F10)

  • ์œ„ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ํฌ์ธํŠธ๋กœ ์ปค์„œ๊ฐ€ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Step Over(F8)

  • ์œ„ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ง€์ ์—์„œ ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

Step Into(F7)

  • ์œ„ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ๋‚ด๋ถ€(๋ฉ”์†Œ๋“œ)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

Force Step Into(Option + Shift + F7)

  • ๋‹ค์Œ ์‹คํ–‰๋˜๋Š” ๋ผ์ธ์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ, Step Into์™€๋Š” ๋‹ค๋ฅด๊ฒŒ *Stepping์„ ๋ฌด์‹œํ•˜๊ณ  ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

*Stepping ๊ธฐ๋Šฅ์€ ๋””๋ฒ„๊ทธ์˜ ์„ค์ • ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ๋””๋ฒ„๊น… ์ค‘ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Stepping ์„ค์ •์„ ์œ„ํ•ด Command + Shift + a -> Stepping ์„ค์ • ์ฐฝ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์„ค์ •์—์„œ Skip simple getters ์— ์ฒดํฌ๋ฅผ ํ•ด์ค์‹œ๋‹ค.

 

๊ทธ ํ›„ getter ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  Step Into์™€ Force Step Into๋ฅผ ๋ˆŒ๋Ÿฌ๊ฐ€๋ฉฐ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

 

Step Into(F7)

 

Force Step Into(Option + Shift + F7)

Force Step Into ๋Š” Step Into์™€๋Š” ๋‹ฌ๋ฆฌ getter ๋ฉ”์†Œ๋“œ๊นŒ์ง€ ์ง„์ž…ํ•˜์—ฌ์„œ ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋””๋ฒ„๊น…์„ ์ง„ํ–‰ํ•  ๋•Œ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋Š” getter, ์ƒ์„ฑ์ž ๋“ฑ์— Stepping ์„ค์ •์„ ํ•œ ๋’ค Skip์ด ํ•„์š”ํ•  ๋•Œ๋Š” Step Into๋กœ, ๋งŒ์•ฝ ์ „๋ถ€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Force Step Into๋กœ ์ด๋™ํ•˜๋ฉด์„œ ๋””๋ฒ„๊น…์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

Step Out(Shift + F8)

  • ํ˜„์žฌ break๋œ ๋ผ์ธ์—์„œ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋น ์ ธ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.(out)

 

Drop Frame

  • Call Stack์„ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.
  • Step Out๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ Step Out์€ ํ•ด๋‹น ๋ผ์ธ์ด ์‹คํ–‰๋œ ํ›„ ๋Œ์•„๊ฐ€์ง€๋งŒ, Drop Frame์€ ํ•ด๋‹น ๋ผ์ธ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

 

Run to Cursor(Option + F9)

  • ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ปค์„œ๊ฐ€ ํฌ์ปค์Šค ๋˜์–ด์žˆ๋Š” ๋ผ์ธ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ํ˜„์žฌ Break Point๋Š” 46๋ผ์ธ์ด๊ณ , ์ปค์„œ๋Š” 55๋ผ์ธ์ž…๋‹ˆ๋‹ค.

์ด ์ƒํƒœ์—์„œ Option + F9๋ฅผ ๋ˆ„๋ฅด๋ฉด break๊ฐ€ 55๋ผ์ธ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ๊ธฐ์กด์— Break Point๋กœ ์„ค์ •ํ•œ๊ฒŒ ์•„๋‹Œ, ๋‹จ๋ฐœ์„ฑ์œผ๋กœ Break๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ™•์ธํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Evaluate Expression(Option + F8)

  • Break๋œ ์ƒํƒœ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€ป Evaluate์— ์˜ํ•ด ์‹คํ–‰๋œ ์ฝ”๋“œ๋Š” ์‹ค์ œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Watch

  • Evaluate์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋””๋ฒ„๊น… ๋ชจ๋“œ์—์„œ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Evaluate์˜ ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ, Watch์˜ ๊ฒฝ์šฐ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๋ฉด Break ๋ผ์ธ์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค.

1๋ฒˆ(Watch)์„ ํด๋ฆญํ•œ ํ›„ 2๋ฒˆ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

i๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด i๊ฐ’์ด watch์— ์˜ํ•ด ์ถœ๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

for๋ฌธ ๋””๋ฒ„๊น…

    public static void main(String[] args) {
        int i = 0;
        for (i = 0; i < 100; i++) {
            System.out.println(i);
            
            // changeMember(i);
        }
    }

๊ฐ„๋‹จํ•˜๊ฒŒ ์œ„์™€ ๊ฐ™์€ for๋ฌธ์ด ์กด์žฌํ•  ๋•Œ, ํŠน์ • i๊ฐ’๋งŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ์œ„ ๋ฐ˜๋ณต๋ฌธ์—์„œ i๊ฐ’์ด 50์ผ๋•Œ ๊ฐ’์„ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ์„๋•Œ F8์„ ๋ฌด์ˆ˜ํžˆ ๋ˆ„๋ฅด๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ ์ง€๋‚˜์ณ๋ฒ„๋ฆฐ๋‹ค๋ฉด?

์ด์ „์œผ๋กœ ๋˜๋Œ์•„ ๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋””๋ฒ„๊น…์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค..

 

 

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

 

๊ทธ๋Ÿผ ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ์šฐ์ธก์— ? ๋ฐ•์Šค๊ฐ€ ํ•˜๋‚˜ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

 

 

 

๐ŸŽฏ ์ •๋ฆฌ

์ด์ƒ์œผ๋กœ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ๋””๋ฒ„๊น…์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ€~๋” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ "์ƒ์‚ฌ๋ถ„์ด ๋””๋ฒ„๊น… ํ•˜์ง€๋ง๊ณ , System.out.println()์œผ๋กœ ์ถœ๋ ฅํ•ด์„œ ํ™•์ธํ•œ๋‹ค." ๋ผ๋Š” ๊ธ€์„ ๊ฝค(?) ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๊ผญ๊ผญ ์ตํ˜€์•ผ ํ•˜๋Š” ๊ธฐ์ˆ ์ด ์•„๋‹๊นŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

์ €๋˜ํ•œ ์•„์ง ์ž์œ ์ž์žฌ๋กœ ๋””๋ฒ„๊น… ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ์ •๋„๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ตœ๋Œ€ํ•œ ๋””๋ฒ„๊น…์„ ํ™œ์šฉํ•ด ์ข€ ๋” ์นœํ•ด์ง€๊ณ  ์•ž์œผ๋กœ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””๋ฒ„๊น…์— ์ต์ˆ™ํ•ด์ง€๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

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

 

 

 

 

๐Ÿ“ References

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€