Debugging with Xcode LLDB - Team-HGD/SniffMEET GitHub Wiki
LLDB๊ฐ ๋ญ๊ฐ์
LLVM + Debugger
LLVM ์์์ ๋์ํ๋ ๋๋ฒ๊ฑฐ
LLVM(Low Level Virtual Machine)
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ CPU ์ํคํ ์ฒ๊ฐ ์ดํดํ ์ ์๋๋ก ์ปดํ์ผ ํ๋ ๊ณผ์ ์ ์๊ฐํด๋ณด๋ฉด (ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ข ๋ฅ * CPU ์ํคํ ์ฒ์ ์ข ๋ฅ) ๋งํผ์ ๊ฒฝ์ฐ์ ์๊ฐ ์๊ธด๋ค.
LLVM์ LLVM-IR์ด๋ผ๋ ์ค๊ฐ ์ธ์ด๋ฅผ ๋ง๋ค์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ LLVM-IR๋ก ๋ณ์ญํ๊ณ ์ด LLVM-IR์ CPU ์ํคํ ์ฒ์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๊ฒ ํด์ฃผ๋ ์ญํ ์ ํจ ์ด๋ ค์ด๊ฑด ์ฌ๊ธฐ๊น์ง!
XCode Debugging
BreakPoint
- ๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฐ ๊ฑธ๋ฆฐ ๋ผ์ธ ์ง์ ๊น์ง ์คํ ๋จ
- ํ์ฑํ/๋นํ์ฑํ ํ ์ ์์
- ๋ค์ํ ์ต์ ์ง์ ๊ฐ๋ฅ (์ด๋ฆ, LLDB ์ปค๋งจ๋, ๋ก๊ทธ ์์ฑ ๋ฑ๋ฑ)โฆ
Debugging Bar
- Disable/enable breakpoints: ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ค์ ํ์ฑํ/๋นํ์ฑํ
- Pause/continue execution: ๋ค์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฐ ๋์ฌ ๋ ๊น์ง ์งํ
- Step over: ๋ค์ ๋ผ์ธ์ผ๋ก ๋์ด๊ฐ๊ธฐ
- Step into: ํ์ฌ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฐ ๊ฑธ๋ ค์๋ ๋ฉ์๋๋ก ๋ค์ด๊ฐ๊ธฐ
- Step out: ํ์ฌ ๋ฉ์๋์์ ๋ฒ์ด๋๊ธฐ
LLDB ์ง์ ์ฌ์ฉํด๋ณด๊ธฐ
Print: p
ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ํ์ ์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
Print Object: po
๊ฐ์ฒด๋ ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๋ ๋ช ๋ น์ด
- description์ ์ด์ฉํด ๊ฐ์ฒด์ ์ํ๋ฅผ ์ถ๋ ฅํ๋ค.
customStringConvertible์ ๊ตฌํํ๊ณ ์์ผ๋ฉด ํด๋น ๋ด์ฉ ํธ์ถ- ์๋๋ผ๋ฉด
p์ ๋๊ฐ์ ๋์์ ํจ
Expression: expr
๋ด๋ถ์์ ํํ์์ ์์ฑ ๊ฐ๋ฅ
- ์ธ์ ์ฐ๋๊ฒ ์ข์๊น
- ์คํ ๋ ์ด์์ ํ์ธํ ๋ ์ข๋ค๊ณ ํฉ๋๋ค.