Test your Firebase Crashlytics implementation

ios

android

unity [beta]

Force a crash to test your implementation

ios

You don't have to wait for a crash to know that Crashlytics is working. You can use the SDK to force a crash by adding the following code to your app:

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()
    }
}

Adjust your project's debug settings

Crashlytics can’t capture crashes if your build attaches a debugger at launch. Adjust your build settings to change the project's debug information format:

  1. With your project still selected in the Xcode Navigator, open the Build Settings tab.
  2. Click All at the top of the tab to display all build settings.
  3. Search for "debug information format".
  4. Set the Debug Information Format setting to DWARF with dSYM File.

Test it out

The code snippet above adds a button that crashes your app when pressed. For it to work, run the app without a debugger:

  1. Click play_arrow Build and then run the current scheme in Xcode to build your app on a device or simulator.
  2. Click stop Stop running the scheme or action in Xcode to close the initial instance of your app. This initial instance includes a debugger that interferes with Crashlytics.
  3. Open your app again from the simulator or device.
  4. Touch Crash to crash the app.
  5. Open your app once more to let the Crashlytics API report the crash. Your crash should show up in the Firebase console within 5 minutes.

android

You don't have to wait for a crash to know that Crashlytics is working. You can add a button to your app's MainActivity to force a crash:

Java
Android

Button crashButton = new Button(this);
crashButton.setText("Crash!");
crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Crashlytics.getInstance().crash(); // Force a crash
    }
});

addContentView(crashButton, new ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT));

Kotlin
Android

val crashButton = Button(this)
crashButton.text = "Crash!"
crashButton.setOnClickListener {
    Crashlytics.getInstance().crash() // Force a crash
}

addContentView(crashButton, ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT))

When testing, reopen your app after pressing the button to crash it to make sure Crashlytics has a chance to report the crash. The report should appear in the Firebase console within five minutes.

unity [beta]

You don't have to wait for a crash to know that Crashlytics is working. You can force a non-fatal exception to test Crashlytics:

  1. Add a new empty GameObject to a scene in your game, then name it CrashlyticsTester.

  2. Click Add Component in the CrashlyticsTester object, then scroll to New Script at the bottom of the components list.

  3. Name the new script CrashlyticsTester as well, then add the following content to the script:

using System;
using UnityEngine;

public class CrashlyticsTester : MonoBehaviour {

    int updatesBeforeException;

    // Use this for initialization
    void Start () {
      updatesBeforeException = 0;
    }

    // Update is called once per frame
    void Update()
    {
        // Call the exception-throwing method here so that it's run
        // every frame update
        throwExceptionEvery60Updates();
    }

    // A method that tests your Crashlytics implementation by throwing an
    // exception every 60 frame updates. You should see non-fatal errors in the
    // Firebase console a few minutes after running your app with this method.
    void throwExceptionEvery60Updates()
    {
        if (updatesBeforeException > 0)
        {
            updatesBeforeException--;
        }
        else
        {
            // Set the counter to 60 updates
            updatesBeforeException = 60;

            // Throw an exception to test your Crashlytics implementation
            throw new System.Exception("test exception please ignore");
        }
    }
}

Enable Crashlytics debug logging

If your forced crash didn't crash, crashed before you wanted it to, or you're experiencing some other issue with Crashlytics, you can enable Crashlytics debug logging to track down the problem.

ios

Crashlytics 3.11.1+

To enable debug logging on your development device, specify the following command line argument in Xcode:

-FIRDebugEnabled
Previous Versions
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
  }

android

Crashlytics 2.9.6 +

To enable debug logging on your development device, set two adb shell flags before running your app:

  adb shell setprop log.tag.Fabric DEBUG
  adb shell setprop log.tag.CrashlyticsCore DEBUG
  

View the logs in the device logs by running:

adb logcat -s Fabric CrashlyticsCore

To disable debug mode, set the flags back to INFO.

  adb shell setprop log.tag.Fabric INFO
  adb shell setprop log.tag.CrashlyticsCore INFO
  
Previous Versions

To enable debug mode on Android, you first need to disable automatic initialization by adding a line to your AndroidManifest.xml:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />
  

You can then manually initialize Crashlytics with the debugger enabled:

Java
Android

final Fabric fabric = new Fabric.Builder(this)
        .kits(new Crashlytics())
        .debuggable(true)  // Enables Crashlytics debugger
        .build();
Fabric.with(fabric);

Kotlin
Android

val fabric = Fabric.Builder(this)
        .kits(Crashlytics())
        .debuggable(true) // Enables Crashlytics debugger
        .build()
Fabric.with(fabric)

unity [beta]

To enable Debug logging for Firebase in Unity, add the following code to your app initialization:

Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;

Next steps

  • Customize crash reports— Crashlytics automatically starts collecting crash reports as soon as you add the SDK, but you can also customize your setup by adding opt-in reporting, logs, keys, and even tracking of non-fatal errors.

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁