heoblitz
Blitz.dev
heoblitz
전체 방문자
오늘
어제
  • 분류 전체보기 (36)
    • iOS Dev (22)
      • iOS (3)
      • Swift (7)
      • Testing (3)
      • Reactive (2)
      • Architecture (2)
      • Layout (1)
    • PS (4)
      • Algorithm (4)
    • Other (9)
      • Springboot (3)
      • Linux (1)
      • Python (1)
      • Java (1)
      • React (1)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • xcode
  • URLSession
  • SWIFT
  • java
  • Test Code
  • RxSwift
  • Git
  • XCTest
  • swift 윈도우
  • codingtest
  • springboot
  • IOS
  • 오픈소스
  • intellij
  • ARC
  • gradle
  • Code Review
  • swift 5
  • github
  • chrome-extension

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
heoblitz

Blitz.dev

iOS 에서 Call Stack 으로 버그 해결하기
iOS Dev

iOS 에서 Call Stack 으로 버그 해결하기

2021. 7. 10. 01:05

Xcode 는 프로그램이 실행되는 동안 "Call Stack" 이라고 하는 데이터 구조에 수행중인 정보를 저장합니다.

이는 개발자가 어떤 코드에서 메서드가 호출되고 해당 동작이 다른 부분과 어떻게 상호작용하는지

파악할 수 있도록 도와줍니다.

 

이번 예시에서는 RxSwift 에서 synchronizationError 를 해결해보겠습니다.

* 꼭 런타임 에러가 아니더라도 특정 코드 라인에 Break Point 를 걸면 Call Stack 를 활용할 수 있습니다.

 

 

Reentrancy anomaly was detected
EXC_BAD_ACCESS 

 

 

위는 구독 클로저에서 바로 값을 방출하므로 재진입 에러가 발생하게 됩니다.

이런 런타임 에러 상황 혹은 Break Point 걸린 부분에서 Call Stack 을 확인하면

어떤 메서드가 순서대로 호출되었는지 파악할 수 있습니다.

 

 

Threads View

 

 

차례대로 Threads View -> View Process by Thead 를 선택하여 스레드에 맞는 Call Stack 를

확인할 수 있습니다. 이는 화살표 방향 ( 아래에서 위로 ) 코드가 진행되었다는 것을 보여줍니다.

 

이 때 런타임 에러가 발생한 부분을 클릭하고, 화살표 아래를 클릭하면 어떤 부분에서 호출되어 왔는지

역추적이 가능하게 됩니다.

 

 

작성한 ViewController 코드까지 역추적이 가능한 모습

 

 

 

이처럼 Call Stack 을 활용하면 메서드 호출 과정을 통해 버그를 유추할 수 있게 됩니다.

 

 

 

 

 

참고 : Debugging with Xcode 

 

Quick Start

Quick Start Getting Ready to DebugTwo of the most important things to do in debugging are to analyze the logic, or control flow, of the code, and to be sure the app presents correct data. Apps with logic problems exhibit unexpected behavior: Nothing happen

developer.apple.com

'iOS Dev' 카테고리의 다른 글

Swift 첫 오픈 소스 기여 후기 ( Open Source PR )  (0) 2020.09.10
iOS StoryBoard vs Code Base 간단 정리  (0) 2020.08.10
Xcode "Plain Style unsupported in a Navigation Item" 해결하기 ( StoryBoard )  (0) 2020.07.04
    'iOS Dev' 카테고리의 다른 글
    • Swift 첫 오픈 소스 기여 후기 ( Open Source PR )
    • iOS StoryBoard vs Code Base 간단 정리
    • Xcode "Plain Style unsupported in a Navigation Item" 해결하기 ( StoryBoard )
    heoblitz
    heoblitz
    iOS, Swift 관련 포스팅을 주로 작성합니다.

    티스토리툴바