LLDB
-
LLDB (9) - FormattingLLDB 2021. 4. 26. 11:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 LLDB에서 출력되는 설명 즉 Description의 정보 형식을 정의할 수 있는데 이에 대해 알아보겠습니다🧑🏻💻 Frame & Thread - LLDB에선 사용자가 프레임 및 스레드에 대한 설명(description)의 정보 형식을 정의할 수 있음 - 일반적으론 브레이크포인트 되어 중단되면 중단 이유 및 위치 설명에 대해 아래와 같이 두줄로 표시 * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: test`main at test.c:5 - 출력되는 형식 설정 (setting set) (lldb) settings set thread-stop-format STRI..
-
LLDB - 명령어 (8)LLDB 2021. 4. 25. 15:41
안녕하세요. 그린입니다🟢 이번 포스팅에서도 LLDB 명령어중 정리하지 못한 명령어에 대해 학습해보겠습니다🧑🏻💻 unalias: 별칭이 주어진것을 제거 (lldb) command unalias “별칭준것” thread step-inst: 명령어의 안으로 들어감 (lldb) si thread step-inst-over: 명령어의 한단계를 진행시킴 (lldb) ni thread until 라인or프레임: 해당 라인 혹은 프레임까지 스레드를 진행 thread list: 현재 스레드 리스트를 출력 --> *는 현재 스레드를 나타냄 thread backtrace: 스레드 역추적 -. 함축어: bt thread return : 해당 프레임에서 스레드 즉시 반환 frame variable: 해당 프레임에 선언된 변수..
-
LLDB - 명령어 (7)LLDB 2021. 4. 23. 15:55
안녕하세요. 그린입니다🟢 이번 포스팅에서는 여태 알아본 LLDB 명령어 외의 명령어를 알아보겠습니다🧑🏻💻 ptv: 뷰의 최상위 테이블뷰 정보 출력 (lldb) ptv pcells: 뷰의 최상위 테이블뷰셀 정보 출력 pinternals: 객체 내부 정보 출력 pkp: 키패스로 값 출력 present/dismiss: 뷰컨을 보여주거나 사라지게함 slowanim / unslowanim: 애니메이션을 느리게 / 정상적으로 해줌 paltrace: 서브뷰의 계층구조 출력 (오토레이아웃이 잘못되어 있으면 Ambiguous Layouts라고 뜨는걸 볼 수 있음) alamborder / alamunborder: 잘못된 오토레이아웃의 보더를 설정해주어 알아보기 쉽게 만듬 : 컬러를 지정해주지 않는다면 디폴트 보더색은 빨..
-
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: 현재 창에 표시되는 모든 ..
-
LLDB (5) - 오픈소스 스크립트 (Derek Selander)LLDB 2021. 4. 21. 12:53
안녕하세요. 그린입니다🟢 이번 포스팅에서는 이제 LLDB의 기본적으로 제공되는 명령어를 넘어 다양한 오픈소스 스크립트를 통해 활용하면 좋을 명령어들에 대해 알아보겠습니다🧑🏻💻 왜 오픈소스 LLDB 스크립트를 알아야할까? - 사실 몰라도 상관없습니다. 다만 여태 명령어들을 복잡하게 조합하여 LLDB 명령어들을 썼던 부분들에 대해 오픈소스에서는 이미 그런 명령어들을 좀 더 편리하게 쓰도록 조합해놨기에 쓰면 훨씬 편리하겠죠?😁 오픈소스를 가져다 쓰는 방법 1. HomeBrew를 통해 라이브러리를 다운하여 .lldbinit 파일에 넣는 방법 2. 오픈소스 깃헙을 클론해서 경로를 가지고 .lldbinit 파일에 넣는 방법 .lldbinit 파일이란? - lldb를 실행 시 초기파일로 앞서 설명한 alias와 같..
-
LLDB - 명령어 (4)LLDB 2021. 4. 20. 11:54
안녕하세요. 그린입니다🟢 오늘 포스팅에서는 LLDB에서 모듈 내 자세한 정보를 얻는 Image 명령어와 명령어에 별칭을 부여하여 사용하는 Alias 명령어에 대해 알아보고 학습하겠습니다🧑🏻💻 Image? - (lldb) image subcommand - 모듈 내 심볼의 정보를 얻는 명령어로 세밀한 정보 탐색이 가능 - 해당 기능을 통해 숨겨지거나 세부적인 private한 정보를 얻을 수 있음 Module & Symbol? - 모듈은 프로세스에서 실행되는 프레임워크/라이브러리 등 모든것을 말함 - 심볼은 소스코드를 구성하는 단위로 메서드/변수/클래스 등을 전부 심볼로 볼 수 있음 (코드 자체라고 보면됨) SymbolTable? - 컴파일된 2진 표현인 binary를 각 코드의 해당하는 심볼로 매핑해주는 ..
-
LLDB - 명령어 (3)LLDB 2021. 4. 19. 17:08
안녕하세요. 그린입니다🟢 오늘 포스팅에서는 LLDB에서 브레이크포인트 되어 멈춰있을때 새 동작을 실행시키는 명령어와 기능에 대해 알아보고 학습하겠습니다🧑🏻💻 오늘 알아볼 기능은 Expression입니다. 말그대로 해석하자면 표현이란 의미입니다. 그럼 우리는 LLDB에서 어떤걸 표현해볼 수 있을까요? 객체 상태에 대한 표현? 뷰의 표현? 이제 알아가보도록 하겠습니다☺️ Expression? - breakpoints 걸려있을때 새로운 동작을 실행시키는 기능 - expression = expr = e po? - 객체의 정보를 확인할 수 있는 기능으로 LLDB를 접하고 가장 많이 쓰고 있는 기초적인 명령어 - (lldb) expression -O -- (객체)의 함축 표현 - O는 Object 즉 객체의 상세..
-
LLDB - 명령어 (2)LLDB 2021. 4. 17. 11:25
안녕하세요. 그린입니다🟢 오늘 포스팅에서는 LLDB에서 상태 변화를 줄 수 있는 명령어와 기능에 대해 알아보고 학습하겠습니다🧑🏻💻 오늘 알아볼 기능은 Stepping인데요, 스테핑 말 그대로 발걸음 같은 의미로 LLDB에서 프로세스 진행 상태를 단계별로 나아가면서 상태 변화를 볼 수 있는 기능입니다. Stepping에는 3가지의 기능이 담겨있는데 Step Over / Step In / Step Out입니다. 그럼 이제 자세히 3가지의 기능과 어떤 명령어를 사용하며 무슨 차이가 있는지 알아보겠습니다😃 Step Over : 브레이크포인트가 걸려있던 상태에서 다음 코드로 넘어가는 기능으로 축구에서는 헛다리 짚기 동작인데 어떻게 보면 헛다리를 짚는 동작 자체가 지금 현재 위치보다 발을 한단계 더 나아가서 짚는..