Xcode์์ ๋๋ฒ๊น ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
Xcode Compiler
์ ํ์ macOS, iOS, watchOS, tvOS ๊ฐ๋ฐ IDE
- ์ปดํ์ผ๋ฌ
- ํ๋ก ํธ์๋
- ์ดํ ๋ฐ ๊ตฌ๋ฌธ ๋ถ์
- tokenizer, syntax
- Clang
- C, C++, Objective C๋ฅผ ๋ถ์ํจ
- Swift Compiler
- Swift ์ปดํ์ผ ์ฉ๋
- ๋ฏธ๋ค์๋
- ํ๋ก๊ทธ๋จ์ ์๋ ์๋ฏธ๋ฅผ ์ ์งํ๋ฉด์, ์ต์ ํ ์์ ์งํ
- c์ ๊ฒฝ์ฐ obj ํ์ผ์ ํด๋น
- java์ ๊ฒฝ์ฐ jvm์์์ ๋๋ bytecode
- LLVM
- ์ด์ ์๋ gcc
- Intermdediate Reperesntation ์์ฑ
- ๋ฐฑ์๋
- ๋ณ๊ฒฝ๋ ์ฝ๋๊ฐ ํ๊ฒ ์ํคํ ์ณ์์ ๋์ํ๋ ์ฝ๋๋ก ๋ณํ
- LLVM
- ๋ฐ์ด๋๋ฆฌ ์ฝ๋ ์์ฑ
- ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ ์ง์ ์ธ์ด์ ์ง์ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค์ํ ๋ฒ์ ์ด ํ์ํ๊ฑฐ๋, ๋ฌด๊ฑฐ์์ง๋ค๋ ๋จ์ ์ด ์๋ค.
- ์ง์ ์ธ์ด๋ก๋ C, C++, Objective-C, Swift, AppleScript, Java, Python, Ruby ๋ฑ์ด ์๋ค.
- ํ๋ก ํธ์๋
LLDB
LLVM ํ๋ก์ ํธ ์ผํ์ผ๋ก ๊ฐ๋ฐ๋ ๋๋ฒ๊ฑฐ
LLVM์ Clang ํํ, parser, LLVM Deassembler ๋ฑ์ ํ์ฉํ์ฌ ์ ์๋์๋ค. C, C++, Objective-C, Swift ๋ฑ์ ์ง์ํ๋ค.
- Thread
- ์คํํ๋ ์์๋ ํ๋ฆ์ ์ ์ด
- Frame
- ์ค๋ ๋์์ stack ๋ณ๋ก ๋ค์ด๊ฐ๋ ๋จ์
- ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด, ๋๋ฒ๊น ํ ๋ ์ผ์ชฝ์ ์ค๋ ๋ ๋ณ๋ก ์ฝ์คํ์ ๋๋ฌ์ ํ์ธํ ์ ์๋๋ฐ, ์ด ๋จ์๋ฅผ frame์ด๋ผ ํจ
- Disassemble
- ์ํคํ ์ณ์ ๋ง๊ฒ ๋ณํ๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ง ์ฝ์ ์ ์๋ ์ฝ๋(์ด์ ๋ธ๋ฆฌ์ด)๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ ์
- Backtrace
- ์คํ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฝ์คํ์ด๋ ๋ก์ปฌ์ ์์ด๋๋ฐ ์ด๋ฅผ ์ญ์ถ์ ํ ์ ์๋ ๊ธฐ๋ฅ
- Expression
- LLDB ์์์ ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ํ์ธ์ ์ํด ์ฌ์ฉํ๋ ํํ์
- Break point
- ๋๋ฒ๊น ํ๊ธฐ ์ํด ํ์๋ฅผ ํด์ฃผ๋ ๊ฒ
- Watch point
- ์ด๋ค ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณํ ๋ ๋ฉ์ถ๊ฒ ํด์ฃผ๋ ๊ฒ
Commands
- C
- continue
- ์ ์ง๋ ํ๋ก๊ทธ๋จ ์คํ ์ฌ๊ฐ
- n
- next
- ํ์ฌ ํ๋ ์์์ ์์ค ์์ค ํ๋จ๊ณ ์งํ (์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฝ๋ ๋ผ์ธ ์๋ฏธ)
- s
- step
- ํ์ฌ ํ๋ ์์์ ์์ค ์์ค ํ๋จ๊ณ ๋ด๋ถ ์งํ
- finish
- ํ์ฌ ํ๋ ์์์ ๋ฒ์ด๋จ
- ni
- ํ์ฌ ํ๋ ์์์ ๋ช ๋ น์ด ์์ค ํ๋จ๊ณ ์งํ (์ค์ ๋ฐ์ด๋ฌ๋ ๋ช ๋ น์ด ์๋ฏธ)
- si
- ํ์ฌ ํ๋ ์์์ ๋ช ๋ น์ด ์์ค ํ๋จ๊ณ ๋ด๋ถ ์งํ
Variables
- fr v
- fr: frame์ ์ฝ์
- ํ์ฌ ํ๋ ์์ ๋งค๊ฐ ๋ณ์, ์ง์ญ ๋ณ์ ์ถ๋ ฅ
- fr v -a (automatic)
- ํ์ฌ ํ๋ ์์ ์ง์ญ ๋ณ์๋ง ์ถ๋ ฅ
- fr v [๋ณ์ ์ด๋ฆ]
- ์ง์ญ ๋ณ์์ค ํด๋น ๋ณ์๋ง ์ถ๋ ฅ
- fr v -f x [๋ณ์ ์ด๋ฆ]
- ํด๋น ๋ณ์๋ง hex๋ก ์ถ๋ ฅ
- fr variable -O self
- object์ description ์ถ๋ ฅ
- ta v
- ํ์ฌ ์์คํ์ผ์ ์ ์๋ ์ ์ญ/์ ์ ๋ณ์ ์ถ๋ ฅ
- ta v [๋ณ์ ์ด๋ฆ]
- ์ ์ญ ๋ณ์์ค, ํด๋น ๋ณ์๋ง ์ถ๋ ฅ
Thread
- thread list
- ํ์ฌ ์ค๋ ๋ ๋ชฉ๋ก ์ถ๋ ฅ
- thread select [thread number]
- ํด๋น ์ค๋ ๋๋ก ์ด๋
- thread until [code line]
- ํด๋น ๋ผ์ธ๊น์ง ์ค๋ ๋ ์คํ
- thread jump -line [code line]
- ํด๋น ๋ผ์ธ์ผ๋ก ์ค๋ ๋ ์ด๋
- thread jump -by +/- [code line]
- ํด๋น ๋ผ์ธ ์๋งํผ ์ค๋ ๋ ์ด๋
- thread return [return value]
- ํ์ฌ ํ๋ ์์์ ํน์ ๊ฐ ๋ฐํ
Disassemble
- di -f
- ํ์ฌ ํ๋ ์์ ํจ์๋ฅผ ๋์ด์ ๋ธ
- di -n
- ํด๋น ํจ์๋ฅผ ๋์ด์ ๋ธ
- di -f -m
- ํ์ฌ ํ๋ ์์ ์ฝ๋์ ํด๋นํ๋ ๋ช ๋ น์ด๋ฅผ ์ฝ๋์ ํจ๊ป ์ถ๋ ฅ
- di -l
- ํ์ฌ ํ๋ ์์ ํ์ฌ ์์ค ์ฝ๋ ๋ผ์ธ์ ๋์ด์ ๋ธ
Backtrace
- bt
- ํ์ฌ ์ค๋ ๋์ stack trace ์ถ๋ ฅ
- bt all
- ๋ชจ๋ ์ค๋ ๋์ stack trace ์ถ๋ ฅ
- bt [count]
- ํ์ฌ ์ค๋ ๋์ stack trace๋ฅผ ๊ฐ์๋งํผ ์ถ๋ ฅ
- up
- ํ์ฌ ์ ํ๋ ํ๋ ์์์ ์๋ก ์ด๋
- down
- ํ์ฌ ์ ํ๋ ํ๋ ์์์ ์๋๋ก ์ด๋
Expression
- e
- ํ์ฌ ํ๋ ์์์ ํํ์ ๊ณ์ฐ
- p
- ํ์ฌ ํ๋ ์์์ ํํ์ ๊ณ์ฐ
- expr [expression]
- LLDB์ ๋ณ์ ์ ์ธ
- po [object, variable]
- ๊ฐ์ฒด, ๋ณ์์ description ์ถ๋ ฅ
- po [memory address]
- ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ ์ถ๋ ฅ
Breakpoint
- b [function name]
- ํด๋น ์ด๋ฆ์ ๊ฐ์ง ๋ชจ๋ ํจ์์ Breakpoint ์ค์ (swift)
- breakpoint set -name [class name]
- ํด๋น ์ด๋ฆ์ ๊ฐ์ง ๋ชจ๋ ํจ์์ breakpoint ์ค์ (objective-c)
- b [line count]
- ํ์ฌ ํ์ผ์ ํน์ ๋ผ์ธ์ breakpoint ์ค์
- breackpoint modify -c [condition]
- ํด๋น ์กฐ๊ฑด์ ๋ํด breakpoint ์ค์
- b l
- breakpoint ๋ชฉ๋ก ์ถ๋ ฅ
ETC
- wa s v global_var
- ์ ์ญ ๋ณ์์ watchpoint ์ค์
- wa s e -[memory address]
- ํด๋น ์ฃผ์์ watchpoint ์ค์
- script [python]
- python์ LLDB script๋ก ์ฌ์ฉ
Visual Debugging
View Debugging
- View hierachy
- View Layout
- View Constraints
Memory Debugging
- ์๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฒดํฌ
- ๊ฐ ๊ฐ์ฒด์ ์ฐธ์กฐ ๊ด๊ณ ํ์
- Referenbce cycle๋ฑ์ ํ์ธ์ด ํธ๋ฆฌํ๋ค.
Profiler
์ฑ๋ฅ ๊ฐ์ , ์ต์ ํ ์ํด ๋ง์ด ์ฌ์ฉ
Memory Profiler
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํ์ธ ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฑ์ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ํด๊ฒฐ ํธ๋ฆฌ
Timer Profiler
- ๋ณ๋ชฉ ๋ฐ์ ๋ถ๋ถ ํ์ธ ๊ฐ๋ฅ
- ํจ์๋ณ ์ํ์๊ฐ ํ๋กํ์ผ๋ง
- ์ด๋ค ๋ฉ์๋์์ ์ํ๋์๋์ง ์ถ์ ๊ฐ๋ฅ
ETC
- breakpoint์ ์ด๋ฆ, ์กฐ๊ฑด, ๋ฌด์ ๋ฑ์ ๊ฑธ ์ ์๋ค.
- breakpoint์์ ์ผ์ชฝ ํด๋ฆญํ๋ฉด ์ ๊ทผ ๊ฐ๋ฅ