-
LLDB (6) - 오픈소스 스크립트 (Chisel)LLDB 2021. 4. 22. 12:00
안녕하세요. 그린입니다🟢
이번 포스팅에서는 이전 Derek Selander 오픈소스에 이어 Chisel에 대해 학습해보겠습니다🧑🏻💻
Chisel?
- iOS 앱 환경에서 디버깅 시 다양하고 유용한 LLDB 명령어들을 지원하기 위한 오픈소스 라이브러리
- 명령어중 OS X는 지원되지 않고 iOS에서만 지원되는것들도 있음 (뷰에 관한것들)
Chisel 설치
- brew update (홈브류 버전 업데이트)
- brew install chisel (홈브류를 통한 chisel 설치)
- ~/.lldbinit 파일 오픈
- command script import /usr/local/opt/chisel/libexec/fbchisellldb.py (내용 추가)
Chisel Command
- pview: 현재 창에 표시되는 모든 UIView 출력 (뷰 계층구조)
- pvc: 현재 창의 뷰컨트롤러 계층구조와 정보 출력
- visualize: UIImage, GCImageRef, UIView, CALayer, NSData, UIColor, CIColor, CGColorRef 등을 미리보기로 보여줌
-> 보려는 뷰 객체의 주소값을 넣어주어야함
- fv: 찾는 뷰 클래스 이름의 정규식과 일치하면 뷰 계층에서 해당 뷰 객체를 찾음 (주소값을 반환)
- fvc: 찾는 뷰컨트롤러의 정규식과 일치하는 뷰컨트롤러를 찾음 (주소값 반환)
- show/hide: 뷰나 레이어를 보여주거나 숨김
-> 원하는 객체의 주소값을 이용하여 숨김/보임 처리를 하면 시뮬레이터에 나타남
- mask/unmask: 투명 직사각형을 뷰/레이어 위에 보여주거나 사라지게함 (배경을 만들어주는것과 비슷)
-> 아래 기준으로 깔린 뷰의 크기만큼 잡힘
- border/unborder: 뷰/레이어에 경계선(보더)를 그리거나 지워줌
-> 색상 / 두께 옵션을 다 줄 수 있음
- caflush: 화면을 바로 다시 그리도록함
- wivar: 객체의 인스턴스 변수에 감시 포인트 설정
- presponder: 특정 객체의 리스폰더 체인을 출력
"이외에도 다양한 명령어가 있고 또한 사용자 지정 명령을 추가할 수 있음"
사용자 지정 명령어 추가 방법
1. ~/.lldbinit 파일에 추가
2. command script import /path/to/fbobjclldb.py
script fbobjclldb.loadCommandsInDirectory(‘로컬 사용자 지정 명령어 파일 경로’)
[느낀점]
Chisel이 정말 강력한 기능들을 많이 제공해주는것같다. 특히 어느곳에서 디버깅 시 적용해보면 좋을지 생각을 해보았는데, 오토레이아웃을 잘못 잡거나 할때도 유용할것 같다.
모호한 오토레이아웃된 객체들의 정보를 알아내고 그 객체에 보더값을 설정하여 복잡한 화면에서도 아 이곳이 잘못되었구나 이곳만 수정하면 되겠구나하고 직관적으로 알 수 있다.
Derek Selander에 이어 Chisel을 학습해보고 다뤄보면서 느낀게 정말 천재들이 많고 우리는 그 천재들에게 감사해하며 노력이 헛되지않게 잘 따라 유용하게 써야겠구나..! 싶었다.
그러다보면 언젠가 오픈소스 라이브러리에 기여하는 날이 오지 않을까?🙌👏
[참고자료]
http://minsone.github.io/ios/mac/xcode-lldb-debugging-with-xcode-lldb-and-chisel
'LLDB' 카테고리의 다른 글
LLDB - 명령어 (8) (0) 2021.04.25 LLDB - 명령어 (7) (0) 2021.04.23 LLDB (5) - 오픈소스 스크립트 (Derek Selander) (0) 2021.04.21 LLDB - 명령어 (4) (0) 2021.04.20 LLDB - 명령어 (3) (2) 2021.04.19