Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ Ready to wire up your own application? The **Full Setup Guide** walks you throug

Pick your platform and follow its SDK guide. (Each guide assumes you've already [created a database](introduction/getting-started/create-a-new-database-in-bugsplat.md), which takes about 30 seconds.)

{% content-ref url="introduction/getting-started/integrations/native/" %}
[native](introduction/getting-started/integrations/native/)
{% endcontent-ref %}

{% content-ref url="introduction/getting-started/integrations/desktop/" %}
[desktop](introduction/getting-started/integrations/desktop/)
{% endcontent-ref %}
Expand Down
11 changes: 11 additions & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,17 @@
## 🧩 Integrations

* [Choose Your Platform](introduction/getting-started/integrations/README.md)
* [🧬 BugSplat Native (9.0)](introduction/getting-started/integrations/native/README.md)
* [Windows](introduction/getting-started/integrations/native/windows.md)
* [macOS](introduction/getting-started/integrations/native/macos.md)
* [Linux](introduction/getting-started/integrations/native/linux.md)
* [Android](introduction/getting-started/integrations/native/android.md)
* [iOS and tvOS](introduction/getting-started/integrations/native/ios.md)
* [Hang Detection](introduction/getting-started/integrations/native/hang-detection.md)
* [Structured Reports](introduction/getting-started/integrations/native/structured-reports.md)
* [User Feedback](introduction/getting-started/integrations/native/user-feedback.md)
* [Crash Data Format](introduction/getting-started/integrations/native/crash-data-format.md)
* [Migrating to 9.0](introduction/getting-started/integrations/native/migration.md)
* [💻 Desktop Software](introduction/getting-started/integrations/desktop/README.md)
* [BugSplat for Windows (C++)](introduction/getting-started/integrations/desktop/cplusplus/README.md)
* [Full Memory Dumps](introduction/getting-started/integrations/desktop/cplusplus/full-memory-dumps.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Localized Support Responses for Windows C++, .NET, and macOS

BugSplat's Support Response feature allows developers to display a localized message to their users at the time of a crash. The Support Response feature is currently supported by our [Windows C++](../../introduction/getting-started/integrations/desktop/cplusplus/), [.NET Framework](../../introduction/getting-started/integrations/desktop/windows-dot-net-framework.md), and [macOS](../../introduction/getting-started/integrations/desktop/macos.md) integrations and support for other platforms is coming soon. The following steps will allow you to create a localized Support Response message for all crashes in your database. These same steps can be applied to create localized [stack key specific Support Response](../../introduction/production/setting-up-custom-support-responses.md#creating-a-crash-specific-support-response) messages as well.
BugSplat's Support Response feature allows developers to display a localized message to their users at the time of a crash. The Support Response feature is supported by our [Windows C++](../../introduction/getting-started/integrations/desktop/cplusplus/), [.NET Framework](../../introduction/getting-started/integrations/desktop/windows-dot-net-framework.md), and [macOS](../../introduction/getting-started/integrations/desktop/macos.md) integrations, and by [BugSplat Native 9.0](../../introduction/getting-started/integrations/native/) on every platform it runs on: the dialog opens the response after an interactive upload on Windows, macOS and Linux, and the mobile prompts hand your app the response URL (`infoUrl`). The following steps will allow you to create a localized Support Response message for all crashes in your database. These same steps can be applied to create localized [stack key specific Support Response](../../introduction/production/setting-up-custom-support-responses.md#creating-a-crash-specific-support-response) messages as well.

## Step 1

Expand Down
14 changes: 14 additions & 0 deletions introduction/development/web-services/crash.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,20 @@ Commits the uploaded crash file for processing by BugSplat.
{% endtab %}
{% endtabs %}

`infoUrl` is returned whenever a [support response](../../production/setting-up-custom-support-responses.md) is configured, even before the crash has been processed: the page shows a processing state and resolves once the stack key is known, so a client can open it as soon as the commit succeeds.

#### Fields sent by BugSplat Native 9.0

The [BugSplat Native](../../getting-started/integrations/native/) SDKs use exactly the three calls above on every platform and send, on the commit call, `appKey`, `user`, `email`, `description`, `notes`, `attributes`, `environment`, `crashSignature` and `crashHash`:

| Field | What it carries |
| --- | --- |
| `environment` | The OS and hardware the app ran on, detected by the SDK and overridable (`Windows 11 10.0.26200 x64`, `Android 14 (API 34) arm64-v8a; Google Pixel 8`). Stored on the crash and shown on the crash page; every Crashpad platform posts with `crashTypeId=5`, so this is how platforms are told apart. Up to 255 characters. |
| `crashSignature` | The crashing thread's application frames as `module:0xrva` joined with `\|` (or `function\|file\|line` per frame for XML/JSON reports), computed before upload. |
| `crashHash` | SHA-256 of `crashSignature`. When BugSplat has processed the same hash recently for the database, the new crash reuses that stack key and skips the stack analyzer; the empty-input digest (`e3b0c442...b855`) means "no signature". |

Hang reports and non-fatal captures from these SDKs post under the platform's normal crash type; the kind of report (`crash`, `hang`, `capture`) travels inside the dump as the Crashpad annotation `bugsplat.reportKind`, together with `bugsplat.hangDurationMs`.

### Crash Type Reference

Use the following `crashType` and `crashTypeId` values when committing uploads.
Expand Down
4 changes: 4 additions & 0 deletions introduction/development/web-services/user-feedback.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ Special XML characters in title and description (`&`, `<`, `>`, `"`, `'`) must b

\* At least one of `title` or `description` must be provided.

## From the SDKs

You do not need to speak this protocol yourself when you use a BugSplat SDK: [BugSplat Native 9.0](../../getting-started/integrations/native/user-feedback.md) (`bugsplat_post_feedback`, C++ `PostFeedback`, .NET `PostFeedback`), [macOS and iOS](../../getting-started/integrations/desktop/macos.md#user-feedback) (`postFeedback`) and [BugSplat for Windows](../../getting-started/integrations/desktop/cplusplus/#user-feedback) (`PostFeedback`) build and upload the report for you and return the crash id and support-response URL.

## Uploading via Presigned URL

User feedback reports are uploaded using the same presigned URL flow as crash reports. See [Crash Post Endpoints](crash.md) for full details on Steps 1-3.
Expand Down
8 changes: 8 additions & 0 deletions introduction/getting-started/integrations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ If you are creating a new account, you'll have an option to access these documen

### Integrations

{% hint style="success" %}
**New: BugSplat Native 9.0** is one out-of-process SDK for Windows, macOS, Linux, Android and iOS/tvOS, with the same dialog, upload and support response everywhere. Windows is verified; the other platforms are being brought up. Start at [BugSplat Native](native/).
{% endhint %}

{% content-ref url="native/" %}
[native](native/)
{% endcontent-ref %}

{% content-ref url="desktop/" %}
[desktop](desktop/)
{% endcontent-ref %}
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/desktop/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# 💻 Desktop Software

{% hint style="info" %}
Starting a new Windows, macOS or Linux integration? [BugSplat Native 9.0](../native/) is the successor to the Windows C++ and macOS SDKs below: one out-of-process crash reporter with the same dialog and support response on every desktop platform.
{% endhint %}

BugSplat provides best-in-class support for desktop software: native Windows [C++](cplusplus/) and [.NET Framework](windows-dot-net-framework.md) applications, [.NET Standard](dot-net-standard.md), [macOS](macos.md) 11.5+ (including ARM Macs), and [Linux](linux.md). It also covers cross-platform desktop frameworks and languages ([Electron](electron.md), [Qt](qt.md), [Java](java.md), and [Python](python.md)), plus the native [Crashpad](crashpad) and [Breakpad](breakpad.md) crash handlers. Take a look at the guides below to configure crash reporting in your app.

{% page-ref page="cplusplus/" %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
Need help upgrading from an older version of BugSplat? Check out our [upgrade guide](bugsplat-for-windows-upgrade-guide.md) to get started.
{% endhint %}

{% hint style="success" %}
This is the 8.x SDK. Its successor, [BugSplat Native 9.0](../../native/windows.md), keeps the same concepts and runtime file names on a cross-platform, out-of-process core; see [Migrating to 9.0](../../native/migration.md). 8.x keeps working and receives critical fixes.
{% endhint %}

### Overview 👀

This document explains how to modify your Microsoft Visual C++ application to provide full debug information to the BugSplat web application when it crashes.
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/desktop/linux.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Linux

{% hint style="info" %}
This guide integrates Crashpad by hand. [BugSplat Native 9.0 for Linux](../native/linux.md) packages the same capture with a monitor, a dialog, attachments, hang detection and the support response, and is being brought up now.
{% endhint %}

## Overview

BugSplat recommends using [Crashpad](https://chromium.googlesource.com/crashpad/crashpad) for Linux crash reporting. Crashpad is Google's latest open-source crash reporting tool. It is the successor to the popular Breakpad crash reporter and allows you to submit minidumps to a configured URL after a crash occurs in your product.
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/desktop/macos.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# macOS

{% hint style="info" %}
This is bugsplat-apple 2.x, the shipping macOS SDK. Its successor on the cross-platform, out-of-process core is [BugSplat Native 9.0 for macOS](../native/macos.md) (bugsplat-apple 9.0), currently being brought up.
{% endhint %}

### Introduction 👋

BugSplat.xcframework enables posting crash reports from iOS, macOS, and Mac Catalyst applications to BugSplat. Visit [bugsplat.com](https://www.bugsplat.com/) for more information and to sign up for an account.
Expand Down
1 change: 1 addition & 0 deletions introduction/getting-started/integrations/downloads.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ description: >-

| | |
| ------------------------ | ------------------------------------------------------------------------- |
| BugSplat Native 9.0 (Windows, macOS, Linux, Android, iOS) | [GitHub releases](https://github.com/BugSplat-Git/bugsplat-native/releases), `BugSplatDotNet` on NuGet; see [platform docs](native/) |
| Windows (Native C++) | [Download](https://app.bugsplat.com/browse/download_item.php?item=native) |
| Windows (.NET Framework) | [Download](https://app.bugsplat.com/browse/download_item.php?item=dotnet) |
| macOS | See platform docs ([here](desktop/macos.md)) |
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/mobile/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Mobile is the most popular software development platform and continues to grow. In a ruthlessly competitive environment, your team cannot ship buggy code. Your mobile developers need a crash reporting solution to ensure the utmost quality in your application. BugSplat has you covered for all your mobile crash reporting needs.

{% hint style="info" %}
[BugSplat Native 9.0](../native/) brings the Android and iOS/tvOS SDKs onto the same core as desktop (bugsplat-android 9.0 and bugsplat-apple 9.0). Those releases are being brought up; the guides below are the shipping SDKs today.
{% endhint %}

{% content-ref url="android.md" %}
[android.md](android.md)
{% endcontent-ref %}
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/mobile/android.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Android

{% hint style="info" %}
This is bugsplat-android 1.x, the shipping Android SDK. Its successor on the cross-platform core is [BugSplat Native 9.0 for Android](../native/android.md) (bugsplat-android 9.0), currently being brought up.
{% endhint %}

### Introduction 👋

The `bugsplat-android` library enables posting native crash reports, Application Not Responding (ANR) events, and user feedback to BugSplat from Android devices. Visit [bugsplat.com](https://www.bugsplat.com/) for more information and to sign up for an account.
Expand Down
4 changes: 4 additions & 0 deletions introduction/getting-started/integrations/mobile/ios.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# iOS

{% hint style="info" %}
This is bugsplat-apple 2.x, the shipping iOS SDK. Its successor on the cross-platform core is [BugSplat Native 9.0 for iOS and tvOS](../native/ios.md) (bugsplat-apple 9.0), currently being brought up.
{% endhint %}

### Introduction 👋

BugSplat.xcframework enables posting crash reports from iOS, macOS, and Mac Catalyst applications to BugSplat. Visit [bugsplat.com](https://www.bugsplat.com/) for more information and to sign up for an account.
Expand Down
99 changes: 99 additions & 0 deletions introduction/getting-started/integrations/native/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
description: >-
BugSplat Native 9.0 is one out-of-process crash reporter for Windows, macOS,
Linux, Android, iOS and tvOS: the same dialog, upload path, support response
and crash-report format on every platform.
Comment on lines +2 to +5
---

# 🧬 BugSplat Native (9.0)

BugSplat Native is the successor to BugSplat for Windows 8.x, bugsplat-apple 2.x and bugsplat-android 1.x: one open-source SDK ([BugSplat-Git/bugsplat-native](https://github.com/BugSplat-Git/bugsplat-native), MIT) with a C API, a header-only C++ wrapper, and .NET, Swift and Kotlin bindings, built on Google's Crashpad.

{% hint style="info" %}
**Status.** Windows is complete and verified end to end. macOS, Linux, Android and iOS/tvOS build in CI and are being brought up platform by platform; each platform page carries a status line at the top. Until your platform's page says "verified", keep using the existing integration for production and evaluate 9.0 alongside it.
{% endhint %}

### How it works

Every desktop platform gets the same two helper processes next to your application:

| Component | Role |
| --- | --- |
| `BugSplatMonitor` | Watches your process from outside. When it crashes, writes the dump (normal, heap or full), computes the crash signature, copies your attachments, and hands the report to the reporter. Same name on every platform. |
| `BugSplatReporter` | The crash dialog (themeable, translatable) and the upload. Opens the support response when there is one. |
| `BugSplat.dll` / `libbugsplat.dylib` / `libbugsplat.so` | The library your app links: the C API, the report store, the uploader, structured reports, feedback, hang detection. |
| `BugSplatWer.dll` | Windows only: the Windows Error Reporting helper for fail-fast crashes. |

Capture, dump writing, the dialog and the upload all happen **out of your process**, so a crash that corrupts the heap, exhausts the stack or takes out the C runtime is still reported. On iOS and tvOS, where the OS forbids a helper process, capture is in process and the report is sent on the next launch.

Initialization refuses to run without the monitor and reporter (`BUGSPLAT_ERR_MONITOR_NOT_FOUND`, `BUGSPLAT_ERR_REPORTER_NOT_FOUND`): a packaging mistake shows up on the developer's machine, not as silently missing crashes in the field.

### Ten lines

```c
#include <bugsplat/bugsplat.h>

int main(void) {
bugsplat_options* o = bugsplat_options_new("fred", "MyApp", "1.0.0"); /* database, app, version */
bugsplat_init(o); /* starts BugSplatMonitor out of process */
bugsplat_set_user("fred@bugsplat.com"); /* every property can change at any time */
bugsplat_set_attribute("branch", "main");
bugsplat_add_attachment("app.log");
volatile int* p = 0; *p = 42; /* dialog, upload, support response */
}
```

C++: `bugsplat::BugSplat bs("fred", "MyApp", "1.0.0"); bs.SetUser("fred");`\
.NET: `using var bs = new BugSplat("fred", "MyApp", "1.0.0"); bs.HandleApplicationExceptions();`

### What every platform shares

* **Report properties, changeable at any time**: key (selects the [support response](../../../production/setting-up-custom-support-responses.md)), user, email, description, notes, up to 64 attributes and up to 24 attachments. Whatever the values are at the instant of the crash is what the report carries.
* **Environment**: a new first-class property, detected automatically (`Windows 11 10.0.26200 x64`, `macOS 14.5 (23F79) arm64`, `Android 14 (API 34) arm64-v8a; Google Pixel 8`), overridable, shown on the crash page. It is how BugSplat tells platforms apart now that every Crashpad platform posts the same crash type.
* **Upload policies**: `DIALOG` (ask the user, then send), `QUIET` (send without UI), `MANUAL` (leave the report pending and let the app decide).
* **The presigned upload** every BugSplat platform uses, with a retry on the next launch for server errors.
* **Client-side crash signature** so repeat crashes group instantly and the support response resolves at once.
* [**Hang detection**](hang-detection.md), [**structured reports**](structured-reports.md) for engines and managed code, [**user feedback**](user-feedback.md), non-fatal captures, and heap/full memory dumps on every desktop platform.
* One [**crash-report store**](crash-data-format.md) format, so a pending report from any platform looks the same.

### Platforms

| Platform | Capture | Dialog | Guide |
| --- | --- | --- | --- |
| Windows (x64, x86, ARM64) | out of process; WER for fail-fast | `BugSplatReporter.exe`, Win32 | [Windows](windows.md) |
| macOS 13+ | out of process | `BugSplatReporter.app`, AppKit | [macOS](macos.md) |
| Linux (glibc 2.31+) | out of process | `BugSplatReporter`, GTK 3 or headless | [Linux](linux.md) |
| Android | out of process, at crash time | in-app prompt on next launch | [Android](android.md) |
| iOS, tvOS | in process (OS rule) | in-app prompt on next launch | [iOS and tvOS](ios.md) |
| Xbox | private bolt-on for certified developers | | [Xbox](../game-development/xbox.md) |

### Guides

{% content-ref url="hang-detection.md" %}
[hang-detection.md](hang-detection.md)
{% endcontent-ref %}

{% content-ref url="structured-reports.md" %}
[structured-reports.md](structured-reports.md)
{% endcontent-ref %}

{% content-ref url="user-feedback.md" %}
[user-feedback.md](user-feedback.md)
{% endcontent-ref %}

{% content-ref url="crash-data-format.md" %}
[crash-data-format.md](crash-data-format.md)
{% endcontent-ref %}

{% content-ref url="migration.md" %}
[migration.md](migration.md)
{% endcontent-ref %}

### Reference

The full API reference, the crash-data format, the upload protocol and the theme and strings formats live with the code:

* [API reference](https://github.com/BugSplat-Git/bugsplat-native/blob/main/docs/API.md)
* [Crash data format](https://github.com/BugSplat-Git/bugsplat-native/blob/main/docs/CRASH-DATA-FORMAT.md) and [upload protocol](https://github.com/BugSplat-Git/bugsplat-native/blob/main/docs/UPLOAD-PROTOCOL.md)
* [Theming the dialog](https://github.com/BugSplat-Git/bugsplat-native/blob/main/reporter/docs/THEME.md) and [translating it](https://github.com/BugSplat-Git/bugsplat-native/blob/main/reporter/docs/STRINGS.md)
* [Architecture](https://github.com/BugSplat-Git/bugsplat-native/blob/main/docs/ARCHITECTURE.md)
Loading