br s -f ViewController.swift -l 23
br s -n changeTextColor
3. Breakpoint Navigator를 통해 titleLabel의 text가 "두 번째 뷰 컨트롤러!"인 경우에만 작동을 일시정지하고 titleLabel의 text를 출력하는 액션을 실행하도록 설정해보세요
- Symbolic Breakpoint 생성
- 세부 사항 입력
- Symbol에 함수명 입력
- Condition에 titleLabel.text == "두 번째 뷰 컨트롤러!" 조건 입력
- Action에 Debugger Command 선택하고 "po titleLabel.text!" 로 출력
- @objc 메서드는 "Enable Breakpoint Location" 체크 해제
br s --name ViewController.viewDidLoad -c "titleLabel.text == \"두 번째 뷰 컨트롤러!\"" -C "po titleLabel.text!"
br di 1.2
- @objc 메서드는 disable 할 것
- breakpoint번호.2 를 disable 하면 됨
- condition의 문자열은
"
로 감싸준다 - condition 내부에
"
가 존재하는 경우 escape 해주면 된다
보이지 않는 뷰는 두 번째 View Controller의 정사각형 View
- 1:1 aspect ratio 제약이 걸려있다.
- viewDidLoad에 breakpoint 걸기
br s -f ViewController.swift -l 14
- 시뮬레이터에서 NEXT 눌러서 두 번째 ViewController로 이동하기
- 두 번째 VC에 어떤 뷰들이 있는지 확인해보기
po self.view.subviews
- UIView는 subview 중 0번째 항목
- 제약 확인하기
po self.view.subviews[0].constraints
- width와 height가 같다는 제약이 걸려있다 => 1:1 aspect ratio
5번의 UIView의 색상을 바꿔야 한다
- expression 명령어로 subview들 확인하기
e self.view.subviews
- 아까 po로 출력한 결과와 비교해보면 UIView에 해당하는 것은 0번째 항목이다
- 색상 바꾸기
e $R18[0]!.backgroundColor = UIColor.systemPink
c
- 색상을 변경하고 continue해주면 실제로 시뮬레이터에서 색이 바뀌어있다
command alias [별칭] [명령어]
참고 Inspecting Variables with LLDB - Intermediate Debugging in iOS
셋 다 data를 출력하는 명령어
frame variable
- 메서드를 실행하지 못 한다는 제약이 있다. 대신 안전하다
- data만 볼 수 있는 명령어
- built-in formatter로 출력한다
- 메서드를 실행하는 것도 가능하고 데이터를 보는 것도 가능하다
- built-in formatter로 출력한다
- 디버거가 생성한 스코프에서 메서드를 실행하는 것이 가능하다
- self나 추론 등의 기능들을 모두 사용할 수 있다
- 객체의 debug description method를 호출할 수 있다