Skip to content

joey-ful/ios-lets-debug

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

문제 풀이

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%