서론
- XCode의 lldb는 ‘Low Level Debugger’의 약자입니다. llvm의 디버거 컴포넌트를 개발하는 애플의 프로젝트
- 즉 소스 코드 레벨에서 앱의 실행을 추적하고 버그를 찾는데 굉장히 유용
- 이번 시간에는 lldb의 사용 법과 그 활용 방법을 통해 버그를 쉽게 캐치하는 방법에 대해 설명
lldb 실행
- 가장 쉽게 접할 수 있는 BreakPoint를 찍으면, 앱이 멈추면서 lldb를 실행
- 그렇다면 현재 사용하고 있는 Thread와 그 Thread에서 실행되고 있는 함수의 Stack이 담겨져 있음
- 제가 진행하고 있는 프로젝트에는 많은 스레드를 사용하고 있는 것을 볼 수 있음
- 아마 앱을 실행하고 나서 직후의 BreakPoint이 요인
- 메인 스레드의 Stack에는 많은 함수들이 쌓여 있는 것을 볼 수 있음
- 각 메서드의 붙어있는 숫자의 의미는 현재 BreakPoint를 기준으로 Stack의 몇 단계 상단이 있는 것인지를 보여줌
- 그리고 각 Stack마다 잡혀있는 변수들이 다른 것은 당연
lldb의 명령어
next
- 만약 BreakPoint에서 다음 실행 명령문으로 계속하고 싶다면, lldb에서 n명령어를 사용하거나 빨간색 화살표 아이콘을 클릭
- BreakPoint을 특정 시점에 걸어 버그를 찾아 나갈 떄 사용하면 유용
backtrace
- Backtrace는 현재 코드가 실행되기까지 과정을 보여주는 명령어
- 이 명령어를 사용하면 현재 스레드에서 어떤 함수가 호출되었는지, 호출된 함수의 순서를 확인 가능
- 만약 3개의 프레임까지만 출력하는 것을 원한다면, bt 3이라고 입력
po
- po명령어는 가장 대중적인 lldb의 명령어. print object의 약자
- 현재 스코프에 있는 객체의 내용을 출력하는 데 사용
그 외의 명령어 보는 법
- lldb에는 수 많은 명령어가 있고, 더 많은 명령어를 숙지해둘수록 디버깅이 쉬워짐
- 한 가지 방법은 help명령어를 통해서 적절한 명령어를 찾는 것이 가능
- 두 번쨰 방법은 아래 링크를 통해 적절한 명령어를 찾는 것이 가능합니다.
https://lldb.llvm.org/use/map.html