# LLDB - Whales๐Ÿ‹, Zion๐Ÿ’Ž ###### tags: `ํ™œ๋™ํ•™์Šต`, `LLDB` 1. ViewController.swift ํŒŒ์ผ์˜ 23๋ฒˆ์งธ ์ค„์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” LLDB ๋ช…๋ น์–ด๋Š”? - b ViewController.swift:23 2. changeTextColor๋ผ๋Š” ์‹ฌ๋ณผ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” LLDB ๋ช…๋ น์–ด๋Š”? - b changeTextColor 3. LLDB์˜ ํŠน์ • ๋ช…๋ น์–ด์˜ ๋ณ„์นญ์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? - command alias 4. Breakpoint Navigator๋ฅผ ํ†ตํ•ด titleLabel์˜ text๊ฐ€ "๋‘ ๋ฒˆ์งธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ!"์ธ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™์„ ์ผ์‹œ์ •์ง€ํ•˜๊ณ  titleLabel์˜ text๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์•ก์…˜์„ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•ด๋ณด์„ธ์š” - br s -f ViewController.swift -l 19 -c `titleLabel.text == "๋‘ ๋ฒˆ์งธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ!"` -C "po testLabel.text" 5. ์˜ค๋ฅ˜(Error) ํ˜น์€ ์ต์…‰์…˜(Exception)์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค์˜ ๋™์ž‘์„ ๋ฉˆ์ถ”๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค ![https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d7e25324ce85b6f35c768.png](https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d7e25324ce85b6f35c768.png) 6. View Controller์˜ ๋ทฐ ์œ„์—๋Š” ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ๋ทฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ทฐ์˜ ์˜คํ† ๋ ˆ์ด์•„์›ƒ ์ œ์•ฝ์„ ํ™•์ธํ•ด์„œ ์•Œ๋ ค์ฃผ์„ธ์š” ![https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d7ed9324ce85b6f35c76a.png](https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d7ed9324ce85b6f35c76a.png) 7. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰์ค‘์ธ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ๋ทฐ์˜ ์ƒ‰์ƒ์„ ๋ถ„ํ™์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด์„ธ์š” ![https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d80ab324ce85b6f35c76e.png](https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d80ab324ce85b6f35c76e.png) 8. LLDB์˜ `v`, `po`, `p` ๋ช…๋ น์–ด์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค - `v` - 'frame variable'์˜ ์•ฝ์–ด - 'Var->child.x'์™€ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. - ๋ณ€์ˆ˜ 'expr local_var'์™€ 'frame var local_var'๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. - 'ํ”„๋ ˆ์ž„ ๋ณ€์ˆ˜'๋Š” ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์ด๋‹ค. - ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ‘œํ˜„์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ํ‰๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์ง์ ‘ ์ฝ๋Š”๋‹ค. - `p` - expression --'์˜ ์•ฝ์–ด - `po` - ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ Console์— ์ถœ๋ ฅํ•˜์—ฌ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. - po๋Š” (lldb) expression -O -- ์˜ Shorthand. ์—ฌ๊ธฐ์„œ -O option์€ object์˜ description์„ ์ถœ๋ ฅํ•˜๊ฒ ๋‹ค๋Š” ๋œป - po๊ฐ€ ์ถœ๋ ฅํ•˜๋Š” description์€ NSObject์˜ debugDescription์ž…๋‹ˆ๋‹ค. 9. ๋‘ ๋ฒˆ์งธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ทฐ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ์ƒํƒœ์—์„œ, ๋‘ ๋ฒˆ์งธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ ๊นŒ์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์บก์ณํ•ด๋ณด์„ธ์š” ![https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d8111324ce85b6f35c770.png](https://s3.ap-northeast-2.amazonaws.com/media.yagom-academy.kr/resources/usr/63e1b1cb324ce85b6f356cf1/20230605/647d8111324ce85b6f35c770.png)