E D R , A S I H C RSS

Debugging

1. λ””λ²„κ·ΈλŠ” λ¬΄μ—‡μΌκΉŒ?

  • ν”„λ‘œκ·Έλž¨μ˜ 였λ₯˜λΌ λ°œκ²¬ν•˜κ³ , κ·Έ 원인을 λ°ν˜€λ‚΄μ„œ κ³ μΉ˜λŠ” μž‘μ—…

1.1. ν…Œμ΄λΈ” 디버깅

1.2. 컴퓨터 디버깅

1.2.1. 디버거 방식

  • ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν• λ•Œ 디버깅 λͺ¨λ“œλ‘œ μ»΄νŒŒμΌν•˜μ—¬ 디버거 κΈ°λŠ₯을 ν¬ν•¨μ‹œμΌœμ„œ μ‚¬μš©ν•˜λ©΄μ„œ 였λ₯˜μ— κ΄€ν•œ 각쒅 μ •λ³΄λΌ μˆ˜μ§‘

1.2.2. 디버그 ν–‰ 방식

  • μˆ˜μ§‘ν•˜κ³  싢은 μ •λ³΄λΌ μΆœλ ₯ν•˜κΈ° μœ„ν•œ λ””λ²„κΉ…μš© λͺ…령을 λΈλ¦¬ ν”„λ‘œκ·Έλž¨ 곳곳에 μ‚½μž…ν•˜μ—¬ μ‹€ν–‰ μ‹œν‚€λŠ” 방식

1.2.3. 기계어 방식


2. 디버깅 λ…Έν•˜μš°

  • μƒˆλ‘œμš΄ μ½”λ“œλΌ μž‘μ„±ν•˜κΈ° 전에 ν˜„μž¬ μžˆλŠ” 버그듀을 μž‘λŠ”λ‹€.
    • λ²„κ·ΈλŠ” 였래 되면 될 수둝 그거에 κ΄€λ ¨λœ μ½”λ“œμ— λŒ€ν•œ 기얡도 희λΈν•΄μ§€κ³ , 뢈λͺ…ν™•ν•΄μ Έμ„œ λ””λ²„κΉ…ν•˜λŠ”λ° 더 λ§Žμ€ μ‹œκ°„μ΄ 걸리게 λœλ‹€.
  • ν•œλ²ˆμ— ν•˜λ‚˜μ”©μ˜ λ²„κ·ΈλΌ μˆ˜μ •ν•˜κ³  ν…ŒμŠ€νŠΈ ν•΄λ³Έλ‹€.
    • κ³Όν•™μ‹€ν—˜μ—μ„œλ„ ν•˜λ‚˜μ˜ μΈμžλΌ λ°”κΏ”κ°€λ©΄μ„œ μ‹€ν—˜μ„ ν•˜μ§€ ν•œκΊΌλ²ˆμ— μ—¬λŸ¬ μΈμžλΌ λ°”κΎΈλ©΄μ„œ μ‹€ν—˜ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
  • λΆ„ν•  정볡 기법
    - 뢄할정볡을 ν•˜λ‹€κ°€ μƒκΈΈμˆ˜ μžˆλŠ” 뢀뢄은 λ‚˜λ¬΄λ§Œ 보게 되고 μˆ²μ„ 보지 λͺ»ν•˜κ²Œ λ˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 주의!

3. 디버깅 μš©λ„?

  • 버그 작기
  • λ‹€λ₯Έ μ‚¬λžŒ μ†ŒμŠ€ μ΄ν•΄ν•˜κΈ°

4. 디버그 λ§ˆμŒκ°€μ§

Ridiculus Simplity
깊게 μƒκ°ν•˜κΈ° 보닀 λ„“κ²Œ μƒκ°ν•˜λΌ.
버그가 μžˆμ„ 리가 μ—†μ–΄!라고 생각지 말라.
μ–΄λ””μ„œλΆ€ν„° μ‹œμž‘ν•  지 μƒκ°ν•œλ‹€.
λ°μ΄ν„°λΌ λˆˆμ— 보이게 λ§Œλ“€λΌ.
λˆ„κ΅°κ°€μ—κ²Œ μ„λͺ…ν•œλ‹€

.

5. 디버깅 μ†Œν”„νŠΈμ›¨μ–΄λΌ μ‚¬μš©ν•œ 디버깅

5.1. VC++디버거 μ“°κΈ°

  • Debug
κΈ°λŠ₯ 단좕킀(*->μ€‘μš”λ„) 의λΈ
Start Debugging, Go *F5 디버깅 λͺ¨λ“œλ‘œ μ‹€ν–‰, 디버깅 λͺ¨λ“œ 쀑에 F5λΌ λ‹€μŒ BreakPoint둜 이동함
BreakPoint * F9 디버깅 λͺ¨λ“œμ—μ„œ λ©ˆμΆœκ³³μ„ 지정
Stop Debugging shift + F5 디버깅 λͺ¨λ“œ 쀑단
Step Into F11 디버깅 λͺ¨λ“œμ—μ„œ ν•œ 라인씩 μ‹€ν–‰ - ν•¨μˆ˜λΌ λ§Œλ‚˜λ©΄ ν•¨μˆ˜ λ‚΄λΆ€λ‘œ λ“€μ–΄κ°€μ„œ 계속 μ‹€ν–‰
Step Over F10 디버깅 λͺ¨λ“œμ—μ„œ ν•œ 라인씩 μ‹€ν–‰ - ν•¨μˆ˜λΌ λ§Œλ‚˜λ©΄ λ‚΄λΆ€λ‘œ μ•ˆλ“€μ–΄κ°€κ³  μ‹€ν–‰λ§Œ ν•˜κ³  λ‹€μŒ 계속 μ‹€ν–‰
Step Out shift+F11 Step Into 둜 ν•¨μˆ˜μ•ˆμ— λ“€μ–΄κ°”λ‹€κ°€ λ‚˜μ˜€κ³  μ‹Άμ„λ•Œ μ‚¬μš©
Run to Cursor Ctrl+F10 ν˜„μž¬ μ»€μ„œκ°€ μžˆλŠ” 곳으둜 디버깅 지점이 λ°”λ€œ. 단 μ΄λΈ μ§€λ‚œ κ³³μœΌλ‘œλŠ” μ•ˆλ¨
Set Next Statement - λ‹€μŒ 디버깅 지점을 지정. Run to Cursorμ—μ„œλŠ” μ΄λΈ μ§€λ‚œκ³³μ€ μ•ˆλ˜μ§€λ§Œ μ—¬κΈ°μ„œλŠ” 됨
  • View
ν™”λ©΄(*->μ€‘μš”λ„) μš©λ„
*Watch Window λ³€μˆ˜κ°’μ΄λ‚˜ 객체의 μƒνƒœλΌ λ΄„. κ·Έ 값을 λ³€κ²½μ‹œν‚¬μˆ˜λ„ 있음
Call Stack Window ν•¨μˆ˜ 호좜 κ²½λ‘œλΌ λ³΄μ—¬μ€Œ
Disassembly μ—­μ–΄μ…ˆλΈ”λ¦¬μ–΄ μ½”λ“œλΌ λ³΄μ—¬μ€Œ

5.2. Eclipse디버거 μ“°κΈ°

κΈ°λŠ₯ 단좕킀(*->μ€‘μš”λ„) 의λΈ
Debug start *F11 디버깅 λͺ¨λ“œλ‘œ μ‹€ν–‰
BreakPoint * Ctrl + Shift + b 디버깅 λͺ¨λ“œμ—μ„œ λ©ˆμΆœκ³³μ„ 지정
Step Into F5 디버깅 λͺ¨λ“œμ—μ„œ ν•œ 라인씩 μ‹€ν–‰ - ν•¨μˆ˜λΌ λ§Œλ‚˜λ©΄ ν•¨μˆ˜ λ‚΄λΆ€λ‘œ λ“€μ–΄κ°€μ„œ 계속 μ‹€ν–‰
Step Over F6 디버깅 λͺ¨λ“œμ—μ„œ ν•œ 라인씩 μ‹€ν–‰ - ν•¨μˆ˜λΌ λ§Œλ‚˜λ©΄ λ‚΄λΆ€λ‘œ μ•ˆλ“€μ–΄κ°€κ³  μ‹€ν–‰λ§Œ ν•˜κ³  λ‹€μŒ 계속 μ‹€ν–‰
Run to Return(Step Out) F7 μ–΄λ–€ ν•¨μˆ˜μ•ˆμ— λ“€μ–΄κ°”λ‹€κ°€ λ°”λ‘œ κ·Έ ν•¨μˆ˜λΌ λ‚˜μ˜€κ³  μ‹Άμ„λ•Œ μ‚¬μš©
Resume(go) F8 λ‹€μŒ BreakPoint μ§€μ μœΌλ‘œ 이동
  • tip : Ctrl + F11 : μ‹€ν–‰

5.3. PHP 디버깅

5.3.1. 디버그행 방식

  • 디버깅 ν•˜κ³  싢은 곳에 보고 싢은 λ³€μˆ˜λͺ…을 파일둜 좜λ ₯ν•˜λŠ” ν•¨μˆ˜λΌ λ„£λŠ”λ‹€.

6. λ°˜λ³΅λ˜λŠ” 디버깅 ν”Όν•˜κΈ° - DebugJournal

사싀 : μ‚½μ§ˆ λ‚΄μš©, κ·Έ μ—¬μ •, μ‹€μˆ˜ν•œ 이야기 -> μ‚¬κ³ μ˜ 과정이 λ“œλŸ¬λ‚˜λ„λ‘!
λŠλ‚Œ, κ΅ν›ˆ
λΈλž˜ 행동 κ³„νš(FAP)
ν”Όλ“œλ°±

7. Thread

κ·Έλ ‡λ‹€λ©΄ λ””λ²„κ±°λŠ” 써야 ν• κΉŒ? 디버깅을 μ•ˆ ν•  μˆ˜λŠ” μ—†μ„κΉŒ?

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:06
Processing time 0.0276 sec