Skip to content

Latest commit

 

History

History
150 lines (94 loc) · 5.44 KB

README.md

File metadata and controls

150 lines (94 loc) · 5.44 KB

문제 풀이

1. ViewController.swift 파일의 23번째 줄에 브레이크 포인트를 설정하려면 입력해야 하는 LLDB 명령어는?

br s -f ViewController.swift -l 23

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

br s -n changeTextColor

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

Breakpoint Navigator

  1. Symbolic Breakpoint 생성

image

  1. 세부 사항 입력
  • Symbol에 함수명 입력
  • Condition에 titleLabel.text == "두 번째 뷰 컨트롤러!" 조건 입력
  • Action에 Debugger Command 선택하고 "po titleLabel.text!" 로 출력

image

  1. @objc 메서드는 "Enable Breakpoint Location" 체크 해제

image

Command line으로는 다음과 같이 구현 가능

br s --name ViewController.viewDidLoad -c "titleLabel.text == \"두 번째 뷰 컨트롤러!\"" -C "po titleLabel.text!"
br di 1.2
  • @objc 메서드는 disable 할 것
    • breakpoint번호.2 를 disable 하면 됨
  • condition의 문자열은 " 로 감싸준다
  • condition 내부에 " 가 존재하는 경우 escape 해주면 된다

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

image

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

보이지 않는 뷰는 두 번째 View Controller의 정사각형 View

  • 1:1 aspect ratio 제약이 걸려있다.


  1. viewDidLoad에 breakpoint 걸기
br s -f ViewController.swift -l 14
  1. 시뮬레이터에서 NEXT 눌러서 두 번째 ViewController로 이동하기

image

  1. 두 번째 VC에 어떤 뷰들이 있는지 확인해보기
po self.view.subviews
  • UIView는 subview 중 0번째 항목

image

  1. 제약 확인하기
po self.view.subviews[0].constraints
  • width와 height가 같다는 제약이 걸려있다 => 1:1 aspect ratio

image

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

5번의 UIView의 색상을 바꿔야 한다

  1. expression 명령어로 subview들 확인하기
e self.view.subviews
  • 아까 po로 출력한 결과와 비교해보면 UIView에 해당하는 것은 0번째 항목이다

image

  1. 색상 바꾸기
e $R18[0]!.backgroundColor = UIColor.systemPink
c
  • 색상을 변경하고 continue해주면 실제로 시뮬레이터에서 색이 바뀌어있다

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

image

8. LLDB의 특정 명령어의 별칭을 설정해줄 수 있는 명령어는 무엇일까요?

command alias [별칭] [명령어]

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

참고 Inspecting Variables with LLDB - Intermediate Debugging in iOS image

셋 다 data를 출력하는 명령어

v

frame variable

  • 메서드를 실행하지 못 한다는 제약이 있다. 대신 안전하다
  • data만 볼 수 있는 명령어
  • built-in formatter로 출력한다

image

p

  • 메서드를 실행하는 것도 가능하고 데이터를 보는 것도 가능하다
  • built-in formatter로 출력한다

image

po

  • 디버거가 생성한 스코프에서 메서드를 실행하는 것이 가능하다
  • self나 추론 등의 기능들을 모두 사용할 수 있다
  • 객체의 debug description method를 호출할 수 있다

image