2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 등록하기

Crashlytics 구현 테스트

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

비정상 종료로 구현 테스트하기

  1. 테스트 비정상 종료를 강제로 적용하는 데 사용할 수 있는 코드를 앱에 추가합니다.

    다음 코드를 사용하여 누르면 비정상 종료를 일으키는 버튼을 앱에 추가할 수 있습니다. 버튼에 'Test Crash'라는 라벨이 지정되어 있습니다.

    SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    Swift

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          let button = UIButton(type: .roundedRect)
          button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
          button.setTitle("Test Crash", for: [])
          button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashButtonTapped(_ sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }
    

    Objective-C

    #import "ViewController.h"
    
    @implementation ViewController
    ‐ (void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    ‐ (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
    
  2. Xcode에서 앱을 빌드하고 실행합니다.

    1. Build and then run the current scheme(현재 스키마 빌드 후 실행)을 클릭하여 테스트 기기 또는 시뮬레이터에서 앱을 빌드합니다.

    2. 앱이 실행될 때까지 기다린 다음 Stop running the scheme or action(스키마 또는 작업 실행 중지)을 클릭하여 앱의 최초 인스턴스를 종료합니다. 이 최초 인스턴스는 Crashlytics를 방해하는 디버거를 포함합니다.

  3. 앱의 첫 번째 비정상 종료 보고서를 전송하려면 테스트 비정상 종료를 강제로 적용합니다.

    1. 테스트 기기 또는 시뮬레이터의 홈 화면에서 앱을 엽니다.

    2. 앱에서 위 코드를 사용하여 추가한 'Test Crash' 버튼을 누릅니다.

    3. 앱이 비정상 종료된 후에는 Xcode에서 앱을 다시 실행하여 앱에서 비정상 종료 보고서를 Firebase에 전송할 수 있도록 합니다.

  4. Firebase Console의 Crashlytics 대시보드로 이동하여 테스트 비정상 종료를 확인합니다.

Console을 새로고침하고 5분 후에도 테스트 비정상 종료가 표시되지 않으면 디버그 로깅을 사용 설정해 보세요(다음 섹션).

Crashlytics 디버그 로깅 사용 설정

Crashlytics 대시보드에 테스트 비정상 종료가 표시되지 않는 경우 Crashlytics의 디버그 로깅을 사용하여 문제를 추적할 수 있습니다.

  1. 디버그 로깅을 사용 설정합니다.

    1. Xcode에서 Product(제품) > Scheme(스키마) > Edit scheme(스키마 수정)을 선택합니다.

    2. 왼쪽 메뉴에서 Run(실행)을 선택한 다음 Arguments(인수) 탭을 선택합니다.

    3. Arguments Passed on Launch(실행 시 인수 전달) 섹션에 -FIRDebugEnabled를 추가합니다.

  2. 테스트 비정상 종료를 강제로 적용합니다. 이 페이지의 첫 번째 섹션에서 이를 수행하는 방법을 설명합니다.

  3. 로그 내에서 다음 문자열을 포함하는 Crashlytics의 로그 메시지를 검색하여 앱이 비정상 종료를 Firebase로 전송하고 있는지 확인합니다.

    Completed report submission

5분이 지나도 Firebase Console의 Crashlytics 대시보드에 이 로그 또는 테스트 비정상 종료가 표시되지 않으면 Firebase 지원팀에 문의하여 로그 출력 사본을 보내 주시면 문제 해결에 도움이 됩니다.

다음 단계