LLDB
-
๊ฐ๋ ์๋ฌธ์๋ตSwift 2021. 4. 29. 11:28
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Swift์ iOS ๊ฐ๋ฐ์ ํ๋ฉฐ ๋ช๊ฐ์ง ํท๊ฐ๋ ธ๊ฑฐ๋ ํ๋ ์ผ๋ถ ๊ฐ๋ ๋ค์ ๋ํ ์๋ฌธ์๋ต์ ํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป MVC์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ์ํคํ ์ณ ํจํด? (MVVM) - MVC: ๋ชจ๋ธ ๋ทฐ ์ปจํธ๋กค๋ฌ ๊ฐ๊ฐ์ ๋ถ๋ฆฌํ์ฌ ์์กด์ฑ์ ์์ ๋ ค ํ๋๋ฐ ๋ทฐ์ ์ปจํธ๋กค๋ฌ์์๋ ์ํต์ ํ๋ ์์กด์ฑ์ด ์๊ธธ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ์์ง๋ ๋ฌธ์ - MVP: MVC์ ๋์ผํ ๊ฐ๋ ์ผ๋ก C๋์ P ํ๋ ์ ํฐ๋ก ๋ณ๊ฒฝ๋๊ฒ์ผ๋ก ๊ฒฐ๊ตญ MVC์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ทฐ/ํ๋ ์ ํฐ ์ฌ์ด ์์กด์ฑ ๋ฌธ์ ๊ฐ ๋ํ๋จ - MVVM: ์ 2๊ฐ ์ํคํ ์ณ ํจํด์ ๋จ์ ์ ๊ทน๋ณตํ๊ณ ์ ๋์ ์ด๋ฒคํธ ํ๋ฆ์ด ๋ทฐ -> ๋ทฐ๋ชจ๋ธ -> ๋ชจ๋ธ๋ก ์ด๋ค์ ธ์์ด Commandํจํด๊ณผ Data Binding์ ํตํด ์์กด์ฑ์ ์ ๊ฑฐ ํ์ ์บ์คํ ๋ฐ ๋์ด๋์ ๋ผ์ด์ ๋ ..
-
LLDB (9) - FormattingLLDB 2021. 4. 26. 11:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ LLDB์์ ์ถ๋ ฅ๋๋ ์ค๋ช ์ฆ Description์ ์ ๋ณด ํ์์ ์ ์ํ ์ ์๋๋ฐ ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป Frame & Thread - LLDB์์ ์ฌ์ฉ์๊ฐ ํ๋ ์ ๋ฐ ์ค๋ ๋์ ๋ํ ์ค๋ช (description)์ ์ ๋ณด ํ์์ ์ ์ํ ์ ์์ - ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ ์ดํฌํฌ์ธํธ ๋์ด ์ค๋จ๋๋ฉด ์ค๋จ ์ด์ ๋ฐ ์์น ์ค๋ช ์ ๋ํด ์๋์ ๊ฐ์ด ๋์ค๋ก ํ์ * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: test`main at test.c:5 - ์ถ๋ ฅ๋๋ ํ์ ์ค์ (setting set) (lldb) settings set thread-stop-format STRI..
-
LLDB - ๋ช ๋ น์ด (8)LLDB 2021. 4. 25. 15:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ LLDB ๋ช ๋ น์ด์ค ์ ๋ฆฌํ์ง ๋ชปํ ๋ช ๋ น์ด์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป unalias: ๋ณ์นญ์ด ์ฃผ์ด์ง๊ฒ์ ์ ๊ฑฐ (lldb) command unalias “๋ณ์นญ์ค๊ฒ” thread step-inst: ๋ช ๋ น์ด์ ์์ผ๋ก ๋ค์ด๊ฐ (lldb) si thread step-inst-over: ๋ช ๋ น์ด์ ํ๋จ๊ณ๋ฅผ ์งํ์ํด (lldb) ni thread until ๋ผ์ธorํ๋ ์: ํด๋น ๋ผ์ธ ํน์ ํ๋ ์๊น์ง ์ค๋ ๋๋ฅผ ์งํ thread list: ํ์ฌ ์ค๋ ๋ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅ --> *๋ ํ์ฌ ์ค๋ ๋๋ฅผ ๋ํ๋ thread backtrace: ์ค๋ ๋ ์ญ์ถ์ -. ํจ์ถ์ด: bt thread return : ํด๋น ํ๋ ์์์ ์ค๋ ๋ ์ฆ์ ๋ฐํ frame variable: ํด๋น ํ๋ ์์ ์ ์ธ๋ ๋ณ์..
-
LLDB - ๋ช ๋ น์ด (7)LLDB 2021. 4. 23. 15:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ฌํ ์์๋ณธ LLDB ๋ช ๋ น์ด ์ธ์ ๋ช ๋ น์ด๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ptv: ๋ทฐ์ ์ต์์ ํ ์ด๋ธ๋ทฐ ์ ๋ณด ์ถ๋ ฅ (lldb) ptv pcells: ๋ทฐ์ ์ต์์ ํ ์ด๋ธ๋ทฐ์ ์ ๋ณด ์ถ๋ ฅ pinternals: ๊ฐ์ฒด ๋ด๋ถ ์ ๋ณด ์ถ๋ ฅ pkp: ํคํจ์ค๋ก ๊ฐ ์ถ๋ ฅ present/dismiss: ๋ทฐ์ปจ์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ์ฌ๋ผ์ง๊ฒํจ slowanim / unslowanim: ์ ๋๋ฉ์ด์ ์ ๋๋ฆฌ๊ฒ / ์ ์์ ์ผ๋ก ํด์ค paltrace: ์๋ธ๋ทฐ์ ๊ณ์ธต๊ตฌ์กฐ ์ถ๋ ฅ (์คํ ๋ ์ด์์์ด ์๋ชป๋์ด ์์ผ๋ฉด Ambiguous Layouts๋ผ๊ณ ๋จ๋๊ฑธ ๋ณผ ์ ์์) alamborder / alamunborder: ์๋ชป๋ ์คํ ๋ ์ด์์์ ๋ณด๋๋ฅผ ์ค์ ํด์ฃผ์ด ์์๋ณด๊ธฐ ์ฝ๊ฒ ๋ง๋ฌ : ์ปฌ๋ฌ๋ฅผ ์ง์ ํด์ฃผ์ง ์๋๋ค๋ฉด ๋ํดํธ ๋ณด๋์์ ๋นจ..
-
LLDB (6) - ์คํ์์ค ์คํฌ๋ฆฝํธ (Chisel)LLDB 2021. 4. 22. 12:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ Derek Selander ์คํ์์ค์ ์ด์ด Chisel์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป Chisel? - iOS ์ฑ ํ๊ฒฝ์์ ๋๋ฒ๊น ์ ๋ค์ํ๊ณ ์ ์ฉํ LLDB ๋ช ๋ น์ด๋ค์ ์ง์ํ๊ธฐ ์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ - ๋ช ๋ น์ด์ค OS X๋ ์ง์๋์ง ์๊ณ iOS์์๋ง ์ง์๋๋๊ฒ๋ค๋ ์์ (๋ทฐ์ ๊ดํ๊ฒ๋ค) Chisel ์ค์น brew update (ํ๋ธ๋ฅ ๋ฒ์ ์ ๋ฐ์ดํธ) brew install chisel (ํ๋ธ๋ฅ๋ฅผ ํตํ chisel ์ค์น) ~/.lldbinit ํ์ผ ์คํ command script import /usr/local/opt/chisel/libexec/fbchisellldb.py (๋ด์ฉ ์ถ๊ฐ) Chisel Command - pview: ํ์ฌ ์ฐฝ์ ํ์๋๋ ๋ชจ๋ ..
-
LLDB (5) - ์คํ์์ค ์คํฌ๋ฆฝํธ (Derek Selander)LLDB 2021. 4. 21. 12:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ LLDB์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๋ช ๋ น์ด๋ฅผ ๋์ด ๋ค์ํ ์คํ์์ค ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ํ์ฉํ๋ฉด ์ข์ ๋ช ๋ น์ด๋ค์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ ์คํ์์ค LLDB ์คํฌ๋ฆฝํธ๋ฅผ ์์์ผํ ๊น? - ์ฌ์ค ๋ชฐ๋ผ๋ ์๊ด์์ต๋๋ค. ๋ค๋ง ์ฌํ ๋ช ๋ น์ด๋ค์ ๋ณต์กํ๊ฒ ์กฐํฉํ์ฌ LLDB ๋ช ๋ น์ด๋ค์ ์ผ๋ ๋ถ๋ถ๋ค์ ๋ํด ์คํ์์ค์์๋ ์ด๋ฏธ ๊ทธ๋ฐ ๋ช ๋ น์ด๋ค์ ์ข ๋ ํธ๋ฆฌํ๊ฒ ์ฐ๋๋ก ์กฐํฉํด๋จ๊ธฐ์ ์ฐ๋ฉด ํจ์ฌ ํธ๋ฆฌํ๊ฒ ์ฃ ?๐ ์คํ์์ค๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ๋ฐฉ๋ฒ 1. HomeBrew๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ดํ์ฌ .lldbinit ํ์ผ์ ๋ฃ๋ ๋ฐฉ๋ฒ 2. ์คํ์์ค ๊นํ์ ํด๋ก ํด์ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง๊ณ .lldbinit ํ์ผ์ ๋ฃ๋ ๋ฐฉ๋ฒ .lldbinit ํ์ผ์ด๋? - lldb๋ฅผ ์คํ ์ ์ด๊ธฐํ์ผ๋ก ์์ ์ค๋ช ํ alias์ ๊ฐ..
-
LLDB - ๋ช ๋ น์ด (4)LLDB 2021. 4. 20. 11:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ค๋ ํฌ์คํ ์์๋ LLDB์์ ๋ชจ๋ ๋ด ์์ธํ ์ ๋ณด๋ฅผ ์ป๋ Image ๋ช ๋ น์ด์ ๋ช ๋ น์ด์ ๋ณ์นญ์ ๋ถ์ฌํ์ฌ ์ฌ์ฉํ๋ Alias ๋ช ๋ น์ด์ ๋ํด ์์๋ณด๊ณ ํ์ตํ๊ฒ ์ต๋๋ค๐ง๐ป๐ป Image? - (lldb) image subcommand - ๋ชจ๋ ๋ด ์ฌ๋ณผ์ ์ ๋ณด๋ฅผ ์ป๋ ๋ช ๋ น์ด๋ก ์ธ๋ฐํ ์ ๋ณด ํ์์ด ๊ฐ๋ฅ - ํด๋น ๊ธฐ๋ฅ์ ํตํด ์จ๊ฒจ์ง๊ฑฐ๋ ์ธ๋ถ์ ์ธ privateํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ Module & Symbol? - ๋ชจ๋์ ํ๋ก์ธ์ค์์ ์คํ๋๋ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ๋ชจ๋ ๊ฒ์ ๋งํจ - ์ฌ๋ณผ์ ์์ค์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋จ์๋ก ๋ฉ์๋/๋ณ์/ํด๋์ค ๋ฑ์ ์ ๋ถ ์ฌ๋ณผ๋ก ๋ณผ ์ ์์ (์ฝ๋ ์์ฒด๋ผ๊ณ ๋ณด๋ฉด๋จ) SymbolTable? - ์ปดํ์ผ๋ 2์ง ํํ์ธ binary๋ฅผ ๊ฐ ์ฝ๋์ ํด๋นํ๋ ์ฌ๋ณผ๋ก ๋งคํํด์ฃผ๋ ..
-
LLDB - ๋ช ๋ น์ด (3)LLDB 2021. 4. 19. 17:08
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ค๋ ํฌ์คํ ์์๋ LLDB์์ ๋ธ๋ ์ดํฌํฌ์ธํธ ๋์ด ๋ฉ์ถฐ์์๋ ์ ๋์์ ์คํ์ํค๋ ๋ช ๋ น์ด์ ๊ธฐ๋ฅ์ ๋ํด ์์๋ณด๊ณ ํ์ตํ๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ค๋ ์์๋ณผ ๊ธฐ๋ฅ์ Expression์ ๋๋ค. ๋ง๊ทธ๋๋ก ํด์ํ์๋ฉด ํํ์ด๋ ์๋ฏธ์ ๋๋ค. ๊ทธ๋ผ ์ฐ๋ฆฌ๋ LLDB์์ ์ด๋ค๊ฑธ ํํํด๋ณผ ์ ์์๊น์? ๊ฐ์ฒด ์ํ์ ๋ํ ํํ? ๋ทฐ์ ํํ? ์ด์ ์์๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋คโบ๏ธ Expression? - breakpoints ๊ฑธ๋ ค์์๋ ์๋ก์ด ๋์์ ์คํ์ํค๋ ๊ธฐ๋ฅ - expression = expr = e po? - ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก LLDB๋ฅผ ์ ํ๊ณ ๊ฐ์ฅ ๋ง์ด ์ฐ๊ณ ์๋ ๊ธฐ์ด์ ์ธ ๋ช ๋ น์ด - (lldb) expression -O -- (๊ฐ์ฒด)์ ํจ์ถ ํํ - O๋ Object ์ฆ ๊ฐ์ฒด์ ์์ธ..