VesselWheel

디버깅 본문

Xcode Study

디버깅

JasonYang 2023. 12. 13. 11:33

브레이크 포인트란

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

LLDB 개념 이해하기

손쉽게 버그를 추적하고 매번 빌드를 하여 테스트를 해보는 런타임 시간을 줄이기 위해 사용하는 디버거

  • Low-Level Debugger라는 뜻으로 LLVM의 디버거 컴포넌트를 개발하는 애플의 서브 프로젝트
  • 로우레벨 컨트롤 가능한 모듈로 이뤄져있으며 기계어에 가까운 영역까지 디버깅 가능 (C/C++/Objective-C/Swift 지원)
  • Xcode의 기본 디버거로 내장
  • Clang식 파서 및 LLVM 디스어셈블러와 같은 LLVM 프로젝트의 기본 라이브러리를 활용한 재사용 가능한 컴포넌트 집합으로 빌드됨
  • 실제 프로그램이 어떻게 동작하는지 이해가 쉬워짐
  • LLVM의 프론트엔드에 대응하는 디버거로 간결하고 명확한 에러메시지의 장점
  • 문법적 오류와 논리적 오류 중 런타임 시 일어나는 논리적 오류를 잡는것이 목표

 

 

 

15, 16번줄에 breakpoint을 설정한 화면

1. textLabel.text를 설정하기 전과, “clicked button”로 설정한 후 시점에 각각 브레이크 포인트를 찍어주세요.

2. 그리고 앱을 실행한 다음, 버튼을 클릭하여 브레이크 포인트를 작동시켜 주세요.

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

po self.textLabel.text

4. textLabel.text를 “버튼을 클릭했습니다”로 설정한 이후 시점의 브레이크 포인트가 작동했을 때, LLDB po 명령어를 사용해 textLabel의 text을 출력해 보세요.

po self.textLabel.text

5. 브레이크 포인트를 통해 디버깅 후 다음 브레이크 포인트가 설정된 곳까지 코드를 실행해야할 경우 디버깅 영역에서 주황색 박스로 되어 있는 부분인, Continue program execution 혹은 Step over를 통해 진행할 수 있습니다.

 

6. 그 외 명령어들

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

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

 

Reference

https://green1229.tistory.com/83

 

LLDB - 개념 및 소개

안녕하세요. 그린입니다🟢 오늘부터 LLDB를 부셔보겠습니다!! 이번 포스팅은 LLDB란 간략히 무엇인지 왜 사용하는것인지? 개념 및 소개를 하겠습니다🧑🏻‍💻 LLDB? - Low-Level Debugger라는 뜻으로 L

green1229.tistory.com

https://developer.apple.com/documentation/xcode/setting-breakpoints-to-pause-your-running-app

'Xcode Study' 카테고리의 다른 글

CollectionView  (1) 2023.12.14
Counter앱 만들기  (0) 2023.12.13
UIPickerView와 protocol & delegate  (0) 2023.12.12
Xcode 시작하기 - 화면 - Interface  (1) 2023.12.11
키오스크 프로그램에 사용된 protocol과 extension  (0) 2023.12.09