---
# System prepended metadata

title: LLDB 할동학습
tags: [LLDB]

---

# LLDB 할동학습

* ViewController.swift 파일의 23번째 줄에 브레이크 포인트를 설정하려면 입력해야 하는 LLDB 명령어는?
breakpoint set --file ViewController.swift --line 23
br s -f ViewController.swift -l 23

* changeTextColor라는 심볼에 브레이크 포인트를 설정하기 위해 입력해야 하는 LLDB 명령어는?
b changeTextColor

* LLDB의 특정 명령어의 별칭을 설정해줄 수 있는 명령어는 무엇일까요?
command alias 별명 "줄이고 싶은 Command"

* Breakpoint Navigator를 통해 titleLabel의 text가 "두 번째 뷰 컨트롤러!"인 경우에만 작동을 일시정지하고 titleLabel의 text를 출력하는 액션을 실행하도록 설정해보세요
(lldb) breakpoint set --name "titleLabel.text" --condition "두 번째 뷰 컨트롤러!"

(lldb) breakpoint set -n "viewDidLoad" --command "print(titleLabel.text)" -G1

(lldb) breakpoint set --name "두 번째 뷰 컨트롤러!" --command "print(titleLable.text)"

* 오류(Error) 혹은 익셉션(Exception)이 발생한 경우 프로세스의 동작을 멈추도록 하는 방법에 대해 알아봅시다

* View Controller의 뷰 위에는 사용자 눈에 보이지 않는 뷰가 있습니다. 이 뷰의 오토레이아웃 제약을 확인해서 알려주세요

* 디버그 모드로 실행중인 상태에서 사용자 눈에 보이지 않는 뷰의 색상을 분홍색으로 변겅해보세요

* LLDB의 v, po, p 명령어의 차이에 대해 알아봅시다

v: 'frame variable'의 약어로 현재 스택 프레임에 대한 변수를 표시

po: 'expression -O  --'의 약어로 현재 스레드에 value의 정보를 사용자 정의 타입으로 출력

p: 'expression --'의 약어로 현재 스레드에 value의 정보를 LLDB형식으로 출력

* 두 번째 뷰 컨트롤러의 뷰가 화면에 표시된 상태에서, 두 번째 뷰 컨트롤러 까지의 메모리 그래프를 캡쳐해보세요



* break

    * 특정 이름을 가진 function에서 break
(lldb) b viewDidLoad
    * 현재 파일 20번째 line에서 break
(lldb) b 20
    * 특정 파일 20번째 line에서 break
(lldb) b ViewController.swift:20
    * 현재 파일 내 특정 text를 포함한 line에서 break
(lldb) b /stop here/
    * 특정 주소값에서 break
(lldb) b 0x1234000


* 출력
     
    * breakpoint 목록 전체 출력
  (lldb) breakpoint list
  (lldb) br list
    * breakpoint 목록 간단하게 출력
  (lldb) br list -b
    * 특정 id를 가진 breakpoint의 정보만 출력
  (lldb) br list 
  
  
* expression

    * expression self.view
      self.view 정보를 출력하는데, 출력된 정보에는 $R0 이라는 이름의 변수에 self.view가 저장된 것으로 보입니다
    * expression $R0.backgroundColor = UIColor.blue
      위에서 나온 self.view가 저장된 $R0의 속성인 배경 색상 (backgroundColor) 을 변경합니다.
    * continue

###### tags: `LLDB`