2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-Study] IOS 앱 개발 입문 1주차 - 간단 디버깅

2024. 4. 2. 02:20ㆍIOS/Swift-Study
SMALL

간단 디버깅

브레이크 포인트 개념, LLDB 개념

LLDB 명령어를 통한 데이터 분석

브레이크 포인트란..?

파란색 화살표를 통해 버그가 의심되는 코드에서 코드 실행을 멈출 수 있는 도구

LLDB 개념의 이해

- 손쉽게 버그를 추적, 매번 빌드 후 테스트를 해보는 런타임 시간을 줄이기 위한 디버거

- "Low-Level Debugger"라는 뜻, LLVM의 디버거 컴포넌트를 개발하는 애플의 서브 프로젝트

- 로우레벨 컨트롤 가능한 모듈로 이뤄져 기계어에 가까운 영역까지 디버깅 가능 (C/C++/Objective-C/Swift 지원)

- Xcode의 기본 디버거로 내장

- Clang식 파서 및 LLVM 디스어셈블러와 같은 LLVM 프로젝트의 기본 라이브러리를 활용한 재사용 가능한 컴포넌트 집합으로 빌드

- 실제 프로그램이 어떻게 동작하는지 이해가 쉬워짐

- LLVM의 프론트엔드에 대응하는 디버거로 간결하고 명확한 에러메시지의 장점

- 문법적 오류와 논리적 오류 중 런타임 시 일어나는 논리적 오류를 잡는것이 목표

브레이크 포인트를 활용하여 값을 디버깅 해보기

LLDB 명령어를 통한 데이터 분석

STEP 1

textLabel.text 설정 전과, “버튼을 클릭했습니다”로 설정 -> 각각 브레이크 포인트 체크

STEP 2

앱 실행 -> 버튼 클릭 -> 브레이크 포인트 작동

더보기

좌측 하단 : 브레이크 포인트가 멈춘 시점에 선언되어 있는 "value"들을 확인

우측 하단 : LLDB 명령어를 입력 가능

textLabel.text를 설정 전 시점의 브레이크 포인트가 작동했을 때, LLDB po 명령어를 사용해 textLabel의 text 출력

po self.textLabel.text

STEP 4

다음 코드 이어서 실행

브레이크 포인트를 통해 디버깅 후 다음 브레이크 포인트가 설정된 곳까지 코드를 실행할 경우

디버깅 영역에서 주황색 박스로 되어 있는 부분인, "Continue program execution" 혹은 Step over를 통해 진행가능

그 외 명령어들

// 값 수정 가능
expression self.textLabel.text = "LLDB 명령어에서 수정도 가능합니다"

// 값 선언 가능 ($를 꼭 붙여주세요)
expr let $somNumber = 10

위 명령어들을 통해 해당 브레이크 포인트가 작동하여 멈춘 시점에서 값을 수정 or 값을 선언해보면서 테스팅 가능

728x90