πŸ“– Study πŸ“–

[2] Run(μ‹€ν–‰) vs Debug(디버그), 디버깅(Debugging) 방법

lrycro_ 2023. 6. 26. 20:06

Run vs Debug

  • Run : μ „체 μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚΄. μ½”λ“œμ˜ 였λ₯˜ 유무 νŒλ‹¨ κ°€λŠ₯. μ˜€λ₯˜μ˜ νžŒνŠΈκ°€ μ£Όμ–΄μ§€μ§€λ§Œ μ •ν™•νžˆ μ–΄λ–€ μƒν™©μ—μ„œ 였λ₯˜κ°€ λ‚¬λŠ”μ§€ μ•Œ 수 μ—†μŒ. 
  • Debug : μ •ν™•ν•˜κ²Œ μ•Œ 수 μ—†λŠ” 였λ₯˜μ— λŒ€ν•΄ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ 쀑단점(Breakpoint)을 μ‚¬μš©ν•˜μ—¬ 디버깅을 ν•œλ‹€. 쀑단점(Breakpoint)은 μ½”λ“œμ˜ λ™μž‘μ„ μž μ‹œ λ©ˆμΆ”λ„λ‘ ν•˜μ—¬ 디버깅(Debugging)이 κ°€λŠ₯ν•˜κ²Œ ν•΄μ€€λ‹€. 그러면 μ€‘단점 이전 μ€„μ˜ μ½”λ“œκΉŒμ§€ μ‹€ν–‰ν•œ ν›„, 쀑단점이 찍힌 μ€„μ˜ μ‹€ν–‰ μ§μ „μ˜ μƒνƒœλ‘œ 멈좰있게 λœλ‹€. λ”°λΌμ„œ ν•΄λ‹Ή 쀄이 μ‹€ν–‰ 되기 μ΄μ „μ˜ μƒνƒœμ™€ μ‹€ν–‰ μ΄ν›„μ˜ μƒνƒœλ₯Ό λ°”λ‘œ 확인할 수 μžˆλ‹€. 

Testing & Debugging

  • Testing : μž…λ ₯에 λŒ€ν•œ 좜λ ₯이 spec에 λ§žλŠ”μ§€ 비ꡐ함. 였λ₯˜ 생기기 전에 미리 λŒ€λΉ„ν•¨.
  • Debugging : 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 이벀트(사건)λ₯Ό 쑰사/μ—°κ΅¬ν•΄μ„œ, 였λ₯˜λ₯Ό μˆ˜μ •ν•¨.

  • 문법 였λ₯˜λŠ” μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μ°Ύμ•„μ£Όλ―€λ‘œ ν…ŒμŠ€νŠΈν•  λ•Œ λ¬Έμ œκ°€ λ˜μ§€ μ•ŠμœΌλ‚˜ 논리 였λ₯˜λŠ” μ½”λ“œκ°€ μ‚¬μš©μžμ˜ μ˜λ„μ™€ λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” κ²ƒμœΌλ‘œ λ‹€μ–‘ν•˜κ²Œ λ°œμƒν•œλ‹€. 직접 λ””λ²„κ·Έν•˜λ©΄μ„œ μ°ΎλŠ” 것 λ§κ³ λŠ” 방법이 μ—†λ‹€.
  • μ˜€νƒ€μž„μ—λ„ λΆˆκ΅¬ν•˜κ³  μ–Έμ–΄μ˜ λ¬Έλ²•μƒμœΌλ‘œλŠ” λ¬Έμ œκ°€ μ—†μ–΄μ„œ μ»΄νŒŒμΌλŸ¬κ°€ μ˜€νƒ€λ₯Ό μΈμ§€ν•˜μ§€ λͺ»ν•˜κ³  κ·Έλƒ₯ λΉŒλ“œν•΄μ„œ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” κ²½μš°λ„ μžˆλ‹€. 예λ₯Ό λ“€λ©΄ =κ³Ό ==, μƒμˆ˜κ°’ μ˜€κΈ°μž… 등이 μžˆλ‹€. 이 κ²½μš°μ—λŠ” μ½”λ“œλ₯Ό ν›‘μ–΄λ³΄λ©΄μ„œ μ˜€νƒ€λ₯Ό μ°Ύμ•„μ•Ό ν•œλ‹€.

디버깅 방법

- μ½”λ“œμ—μ„œ λ””λ²„κΉ…ν•˜κ³ μž ν•˜λŠ” 쀄에 쀑단점을 μ„€μ •ν•œλ‹€. μ΄λ•Œ 쀑단점은 μ—¬λŸ¬ 개 섀정이 κ°€λŠ₯ν•˜λ‹€.

- IDE(Integrated Development Environment, 톡합 개발 ν™˜κ²½)의 디버깅 κΈ°λŠ₯을 μ‹€ν–‰ν•˜λ©΄ μ½”λ“œλ₯Ό 1쀄씩 μ‹€ν–‰ν•˜κ±°λ‚˜ λ‹€μŒ μ€‘λ‹¨μ κΉŒμ§€ μ‹€ν–‰ν•  수 있으며, 이 κ³Όμ •μ—μ„œ 좔적할 λ³€μˆ˜κ°’λ„ μ§€μ • κ°€λŠ₯ν•˜λ‹€.

- λ³€μˆ˜κ°’ 이외에도 μ›ν•˜λŠ” μˆ˜μ‹μ„ μž…λ ₯ν•΄ 논리 였λ₯˜λ₯Ό νŒŒμ•…ν•  수 μžˆλ‹€.


디버깅 μŠ΅κ΄€

❌ 전체 μ½”λ“œ ν•œλ²ˆμ— μž‘μ„±, ν…ŒμŠ€νŠΈ, 디버그 μ‹œλ„ν•˜κΈ°

β­• ( ν•¨μˆ˜ μž‘μ„± → ν…ŒμŠ€νŠΈ & 디버깅 ) 반볡 ν›„, 톡합 ν…ŒμŠ€νŠΈ(Integration Test) μ§„ν–‰

❌ κ·Έλƒ₯ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ³ , 버그가 μ–΄λ””μ—μ„œ μƒκ²ΌλŠ”μ§€ 기얡에 μ˜μ‘΄ν•˜κΈ°

β­• μ½”λ“œλ₯Ό λ°±μ—…(주석 처리)ν•œ ν›„, μˆ˜μ •ν•˜κΈ°

β­• 잠재적인 버그λ₯Ό μ£Όμ„μœΌλ‘œ λ‚¨κ²¨μ„œ ν‘œμ‹œν•˜κΈ°

β­• μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•˜λ©΄μ„œ 이전 버전과 μƒˆ 버전을 λΉ„κ΅ν•˜κΈ°