콘솔로 이동

Firebase Crashlytics 구현 테스트

강제 비정상 종료로 구현 테스트

비정상 종료가 발생할 때까지 기다리지 않아도 Crashlytics가 정상 작동하는지 확인할 수 있습니다. 앱에 다음 코드를 추가하면 SDK를 사용하여 강제로 비정상 종료시킬 수 있습니다.

Objective-C
#import "ViewController.h"
#import <Crashlytics/Crashlytics.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:@"Crash" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(crashButtonTapped:)
        forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (IBAction)crashButtonTapped:(id)sender {
    [[Crashlytics sharedInstance] crash];
}

@end
Swift
import UIKit
import Crashlytics

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("Crash", for: [])
        button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
        view.addSubview(button)
    }

    @IBAction func crashButtonTapped(_ sender: AnyObject) {
        Crashlytics.sharedInstance().crash()
    }
}

프로젝트의 디버그 설정 조정

빌드에서 실행 시 디버거를 연결하는 경우 Crashlytics가 비정상 종료를 포착하지 못합니다. 빌드 설정을 조정하여 프로젝트의 디버그 정보 형식을 변경하세요.

  1. Xcode 탐색기에서 프로젝트를 선택해 두고 빌드 설정 탭을 엽니다.
  2. 탭 상단의 전체를 클릭하여 모든 빌드 설정을 표시합니다.
  3. '디버그 정보 형식'을 검색합니다.
  4. 디버그 정보 형식 설정을 dSYM 파일로 DWARF로 설정합니다.

테스트

위의 코드 스니펫으로 추가한 버튼을 누르면 앱이 비정상 종료됩니다. 이 방법을 사용하려면 디버거 없이 앱을 실행하세요.

  1. Xcode에서 play_arrow Build and then run the current scheme(현재 스키마 빌드 후 실행)를 클릭하여 기기 또는 시뮬레이터에서 앱을 빌드합니다.
  2. Xcode에서 stop Stop running the scheme or action(스키마 또는 작업 실행 중지)을 클릭하여 앱의 최초 인스턴스를 닫습니다. 이 최초 인스턴스는 Crashlytics를 방해하는 디버거를 포함합니다.
  3. 시뮬레이터 또는 기기에서 앱을 다시 엽니다.
  4. 비정상 종료를 눌러 앱을 다운시킵니다.
  5. 엡을 다시 열어 Crashlytics API를 통해 오류를 보고합니다. 5분 내에 Firebase Console에 비정상 종료가 표시됩니다.

Crashlytics 디버그 로깅 사용 설정

강제로 적용한 비정상 종료가 작동하지 않았거나, 원하는 시기보다 이르게 비정상 종료되었거나, Crashlytics에 다른 문제가 발생한 경우 Crashlytics 디버그 로깅을 사용 설정하여 문제를 추적할 수 있습니다.

Crashlytics 3.11.1+

개발 기기에서 디버그 로깅을 사용 설정하려면 Xcode에서 다음 명령줄 인수를 지정합니다.

-FIRDebugEnabled
이전 버전
Objective-C
- (BOOL)application:(UIApplication *)application
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Initialize Firebase service.
        [FIRApp configure];
        [Fabric.sharedSDK setDebug:YES];
        return YES;
      }
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions
        launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Initialize Firebase service.
        FirebaseApp.configure()
        Fabric.sharedSDK().debug = true
        return true
      }

다음 단계

  • 오류 보고서 맞춤설정 - SDK를 추가하는 즉시 Crashlytics에서 자동으로 오류 보고서 수집을 시작하지만 보고 선택 옵션, 로그, 키를 추가하고 심각하지 않은 오류를 추적하여 설정을 맞춤설정할 수도 있습니다.