LLDB 기초
LLDB는 강력한 디버거로서 Xcode 및 터미널을 통해 사용할 수 있습니다. 애플리케이션의 버그를 식별하고 해결하는 데 필수적인 도구입니다.
LLDB 사용 이유
- 개발 효율 향상: LLDB를 사용하면 코드의 실행 흐름을 멈추고, 상태를 검사하며, 문제의 원인을 정확히 진단할 수 있습니다.
- 다양한 기능 제공: LLDB는 breakpoint 설정, 실행 흐름 제어, 변수 검사 및 수정 등 다양한 기능을 제공합니다.
기본 구조
LLDB 명령어는 command, subcommand, option, argument로 구성되며, 각 요소는 공백으로 구분됩니다.
명령어 예제
(lldb) breakpoint set --file test.c --line 12
위 예제는 test.c 파일의 12번째 줄에 breakpoint를 설정합니다.
도움말 사용
-
Help 사용: LLDB의
help명령어를 사용하면 다양한 subcommands 및 options의 사용법과 리스트를 제공합니다.(lldb) help (lldb) help breakpoint (lldb) help breakpoint set -
Apropos 사용: 특정 기능을 찾기 위해
apropos명령어와 키워드를 사용할 수 있습니다.(lldb) apropos "reference count"
Breakpoint 설정
Breakpoint는 프로그램 실행 중 특정 지점에서 멈추게 하는 기능입니다.
함수 이름으로 Breakpoint 설정
(lldb) breakpoint set --name viewDidLoad
(lldb) b -n viewDidLoad
정규 표현식을 사용한 Breakpoint 설정
(lldb) breakpoint set --func-regex '^hello'
(lldb) br s -r '^hello'
파일과 줄 번호를 이용한 Breakpoint 설정
(lldb) br s --file ViewController.swift --line 2
(lldb) br s -f ViewController.swift -l 20
Breakpoint 명령어
-
Breakpoint 실행 및 자동 계속 실행 설정:
(lldb) breakpoint set -n "viewDidLoad" --command "po $arg1" -G1 (lldb) br s -n "viewDidLoad" -C "po $arg1" -G1 -
Breakpoint 리스트 확인:
(lldb) breakpoint list -
Breakpoint 삭제 및 비활성화:
(lldb) breakpoint delete (lldb) breakpoint disable (lldb) br de 1 (lldb) br di 1.1
PO 명령어
po는 "print object"의 줄임말로, 실행 중인 객체의 정보를 출력합니다. 이는 주로 객체의 상태를 확인할 때 사용됩니다.
(lldb) po Label1.text
문제 해결
- 에러 메시지:
cannot find 'Label1' in scope이러한 에러는 해당 객체가 현재 스코프에 없거나, 잘못된 이름을 사용했을 때 발생합니다. - nil 값: 객체가 초기화되지 않았거나 적절한 값이 할당되지 않았을 때
nil을 반환할 수 있습니다.