기본 개념과 breakpoint
/ expression
/ image
는 여기를 참고
특정 코드위치에서 멈추는 기능.
함수에 걸기 (특정함수 / 정규식을 따르는 모든 함수)
특정파일의 특정라인에 걸기
breakpoint에 조건걸기
break가 걸리면 특정 커맨드 실행하기
기타 : breakpoint 리스트 확인하기 / 삭제 / 비활성화
인스턴스의 현재 값을 읽거나 변경할 수 있다
LLDB용 변수를 할당하고 함수를 실행하는 등의 행위도 가능
인스턴스 읽기 (po)
인스턴스 값 변경하기
LLDB용 변수 할당하기
메모리주소로 변수 접근하기
현재 process에 load된 module/symbol 정보를 출력.
현재 process에 올려진 모든 module보기
특정 module 검색
특정 symbol 검색
Crash log 분석하기
해당 객체의 정보 / 코드실행결과를 string
으로 출력해준다.
코드 컴파일 과정이 있어 코드를 '실행'하는 것도 가능합니다
expression --object-description
의 shorthand.
해당 객체의 정보를 출력해주고, 객체의 참조를 레지스터
로 불러옵니다
코드 컴파일 과정이 있어 코드를 '실행'하는 것도 가능합니다
expression --raw
의 shorthand
po와 다른 점은, 다른 객체의 참조를 프로퍼티로 갖고 있으면
그 객체에 대한 정보도 참조를 따라가서 죄다 띄워줍니다
po
처럼 참조를 레지스터로 가져오지 않고, 결과 출력만 해줍니다.
다만, 참조가 있으면 타고 들어가서 전부 보여준다는 점은 p
와 유사합니다
frame variable
의 shorthand
위의 두 커맨드와 달리, v
에는 컴파일을 하지 않아서
뭔가 계산하거나 Swift구문이 끼어들 수 없고 인스턴스 값을 바로 읽는 것만 가능합니다
대신, display관련 옵션이 많다고 합니다
(특정 이름으로 시작하는 모든 변수 프린트하기 등)
(lldb) watchpoint set variable <변수명>
(lldb) watchpoint set expression -- <메모리주소>
(lldb) break set -E swift
로 걸어주면 된다
(유용할듯?)
위 커맨드로 break를 걸고 Error throw를 하면 아래와 같이 나온다
뷰컨의 view 프로퍼티를 따라 타고 들어간다
(다른 좋은 방법이 있을지도)
예시 : 특정view의 배경색바꾸기
-> 뷰컨에서 breakpoint
-> p self.view.subviews
로 레지스터 확보 및 subview의 몇 번째 요소인지 확인
-> e $R1[0].backgroundColor = UIColor.systemPink