Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- viewcontroller
- Navigation
- delegation
- mvvm
- 책후기
- roundingMode
- 부트캠프
- IOS
- contentInset
- SWIFTUI
- 아이폰
- View Life Cycle
- 야곰아카데미
- Modality
- Codegen
- @available
- Failed to register bundle identifier
- SWIFT
- 독서후기
- UIResponder
- Info.plist
- human interface guidelines
- 독후감
- 스위프트
- xcode
- Mock
- NumberFormatter
- NotificationCenter
- Structures and Classes
- 스타트업주니어로살아남기
Archives
- Today
- Total
호댕의 iOS 개발
[Crashlytics] 크래쉬가 발생하지 않았을 때에도 로그를 보내기 본문
앱에서 예상하지 못했던 비정상 강제 종료되는 상황을 트래킹하기 위해 Firebase의 Crashlytics를 많이 사용하게 된다.
사용자들에게 앱을 사용하다가 갑자기 앱이 종료되게 된다면 앱에 대한 신뢰도가 매우 떨어질 수 있기 때문에 이를 지속적으로 트래킹하고 문제의 원인이 된 부분을 해결해줘야 한다.
Crashlytics는 Xcode의 dSYM 파일의 디버깅 정보를 이용해 어떤 코드에서 문제가 생겼는지에 대해 알려주게 된다.
구체적으로 보자면,
- dSYM 파일에는 앱의 바이너리 코드에서 사용하는 함수 / 변수 이름과 이에 대한 주소 정보가 포함한 Symbol Table이 존재하게 된다. 이를 매핑하여 어떤 함수에서 문제가 발생했는지 식별 가능
- 소스 코드에서 라인 번호와 바이너리 코드의 주소 간의 매핑 정보도 포함된다. 이를 통해 어떤 코드에서 문제가 생겼는지 보다 정확하게 알 수 있게 된다.
- 사용되는 변수와 데이터 타입의 정보를 포함한다.
그렇다면 비정상 종료가 발생했을 때에만 Crashlytics를 사용할 수 있을까?
물론 이름은 Crashlytics로 크래쉬가 발생했을 때에 이를 분석하기 위한 툴인 것 같지만 임의로 로그를 보내서 문제 원인을 정확히 파악하는데 도움을 줄 수도 있다.
방법은 간단하다.
FirebaseCrashlytics 라이브러리를 import한 후
Crashlytics.crashlytics().record(
error: NSError(
domain: String,
code: Int,
userInfo: [
String: Any
]
)
)
이렇게 Error를 보내주면 된다.
확인도 간단하다.
기존 비정상 종료가 발생하여 찍히는 로그들은 전부 이벤트 유형이 '비정상 종료'로 되어 있다.
이를 '심각하지 않음'으로 변경 후 보면 직접 찍은 Error들을 확인할 수 있다.
'Software Engineering > iOS' 카테고리의 다른 글
DiffableDataSource, 왜 써야 하고 어떻게 써야할까? (1) | 2023.12.20 |
---|---|
[Swift] Opaque Type (0) | 2023.09.13 |
[iOS] 사용자가 캡쳐를 했는지 알 수 있다?! (2) | 2023.08.18 |
[iOS] 위젯 도입기 - UserDefaults에 저장된 값 Widget Extension에 공유하기 (AppGroup) (0) | 2023.07.31 |
[iOS] 위젯 도입기 - 진짜 도입만 해보려했는데 처음부터 막혔다...!? (2) | 2023.07.26 |
Comments