ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LLDB (6) - 오픈소스 스크립트 (Chisel)
    LLDB 2021. 4. 22. 12:00

    안녕하세요. 그린입니다🟢

    이번 포스팅에서는 이전 Derek Selander 오픈소스에 이어 Chisel에 대해 학습해보겠습니다🧑🏻‍💻

     

    Chisel?

     - iOS 앱 환경에서 디버깅 시 다양하고 유용한 LLDB 명령어들을 지원하기 위한 오픈소스 라이브러리 

     - 명령어중 OS X 지원되지 않고 iOS에서만 지원되는것들도 있음 (뷰에 관한것들)

     

    Chisel 설치

    1. brew update (홈브류 버전 업데이트)
    2. brew install chisel (홈브류를 통한 chisel 설치)
    3. ~/.lldbinit 파일 오픈
    4. 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을 학습해보고 다뤄보면서 느낀게 정말 천재들이 많고 우리는 그 천재들에게 감사해하며 노력이 헛되지않게 잘 따라 유용하게 써야겠구나..! 싶었다.

    그러다보면 언젠가 오픈소스 라이브러리에 기여하는 날이 오지 않을까?🙌👏

     

    [참고자료]

    github.com/facebook/chisel

    http://minsone.github.io/ios/mac/xcode-lldb-debugging-with-xcode-lldb-and-chisel

    https://yagom.net/courses/start-lldb/

    '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
Designed by Tistory.