[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐ŸŸ ์›จ์ง€์˜ ์ธํ…”๋ฆฌ์ œ์ด ๋””๋ฒ„๊น… (debug, debugging)

KIM YONG GUยท2023๋…„ 10์›” 28์ผ
0

์šฐ์•„ํ•œํ…Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
31/41

์ฐธ์กฐ ๊ฐ•์˜

Debug ๋ชจ๋“œ๋กœ ์‹คํ–‰

Resume

  • ๋‹จ์ถ•ํ‚ค: F9
  • ๊ธฐ๋Šฅ: ๋‹ค์Œ break point๋กœ ์ด๋™

Step Over

  • ๋‹จ์ถ•ํ‚ค: F8
  • ๊ธฐ๋Šฅ: ํ˜„์žฌ break๋œ ํŒŒ์ผ์—์„œ ๋‹ค์Œ ๋ผ์ธ ์ด๋™

Step Into

  • ๋‹จ์ถ•ํ‚ค: F7
  • ๊ธฐ๋Šฅ: ํ˜„์žฌ break๋œ ๋ผ์ธ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ธ ๋‚ด๋ถ€๋กœ ์ด๋™ (ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„ ํŒŒ์•… ๊ฐ€๋Šฅ

Force step into

  • ๋‹จ์ถ•ํ‚ค: option + shift + F7
  • ๊ธฐ๋Šฅ: ๋‹ค์Œ ์‹คํ–‰๋˜๋Š” ๋ผ์ธ์œผ๋กœ ์ด๋™ํ•˜๋‚˜, step into์™€ ๋‹ฌ๋ฆฌ Stepping์„ ๋ฌด์‹œํ•˜๊ณ  ์ง„ํ–‰
    ์˜ˆ๋ฅผ ๋“ค์–ด, command + shift + a -> stepping์œผ๋กœ ์„ค์ •์ฐฝ์„ ์˜คํ”ˆ ํ›„

Step Out

  • ๋‹จ์ถ•ํ‚ค: shift + F8
  • ๊ธฐ๋Šฅ: ํ˜„์žฌ break๋œ ๋ผ์ธ์—์„œ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    step into๋กœ ํŒŒ๊ณ  ๋“ค์–ด๊ฐ„ ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ์—์„œ ํ˜ธ์ถœํ–ˆ๋˜ ์™ธ๋ถ€ ๋ฉ”์†Œ๋“œ๋กœ ๋น ์ ธ๋‚˜์˜ฌ์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค

Drop Frame

  • ๋‹จ์ถ•ํ‚ค : ์—†์Œ
  • ๊ธฐ๋Šฅ : call stack์„ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ„๋‹ค.
    step out๊ณผ ๋ณ„์ฐจ์ด ์—†์–ด ๋ณด์ด๋Š”๋ฐ, ํฐ ์ฐจ์ด์ ์€ step out์€ ํ•ด๋‹น ๋ผ์ธ์ด ์‹คํ–‰๋œ ํ›„ ๋Œ์•„๊ฐ€์ง€๋งŒ, drop frame์€ ํ•ด๋‹น ๋ผ์ธ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋Œ์•„๊ฐ„๋‹ค.

Conditioned break point

  • ๋‹จ์ถ•ํ‚ค : ์—†์Œ
  • ๊ธฐ๋Šฅ : ์ฝ”๋“œ ๋‚ด์—์„œ ์ž‘์„ฑ๋œ break point์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ. ํŠน์ •๋ณ€์ˆ˜๊ฐ€ ํŠน์ •๊ฐ’์„ ๊ฐ€์งˆ ๋•Œ break ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ. while ๋˜๋Š” for๋ฌธ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

Evaluate Expression

  • ๋‹จ์ถ•ํ‚ค : alt + F8
  • ๊ธฐ๋Šฅ : ํ˜„์žฌ scope์—์„œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

Watch

  • ๋‹จ์ถ•ํ‚ค : insert
  • ๊ธฐ๋Šฅ : ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ’์„ breakpoint์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ”„๋ง์—์„œ์˜ debug

profile
Engineer, Look Beyond the Code.

0๊ฐœ์˜ ๋Œ“๊ธ€