Xcode 는 프로그램이 실행되는 동안 "Call Stack" 이라고 하는 데이터 구조에 수행중인 정보를 저장합니다.
이는 개발자가 어떤 코드에서 메서드가 호출되고 해당 동작이 다른 부분과 어떻게 상호작용하는지
파악할 수 있도록 도와줍니다.
이번 예시에서는 RxSwift 에서 synchronizationError 를 해결해보겠습니다.
* 꼭 런타임 에러가 아니더라도 특정 코드 라인에 Break Point 를 걸면 Call Stack 를 활용할 수 있습니다.
위는 구독 클로저에서 바로 값을 방출하므로 재진입 에러가 발생하게 됩니다.
이런 런타임 에러 상황 혹은 Break Point 걸린 부분에서 Call Stack 을 확인하면
어떤 메서드가 순서대로 호출되었는지 파악할 수 있습니다.
차례대로 Threads View -> View Process by Thead 를 선택하여 스레드에 맞는 Call Stack 를
확인할 수 있습니다. 이는 화살표 방향 ( 아래에서 위로 ) 코드가 진행되었다는 것을 보여줍니다.
이 때 런타임 에러가 발생한 부분을 클릭하고, 화살표 아래를 클릭하면 어떤 부분에서 호출되어 왔는지
역추적이 가능하게 됩니다.
이처럼 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 |