The Sentry Native SDK is intended for C and C++. However, since it builds as a dynamic library and exposes C-bindings, it can be used by any language that supports interoperability with C, such as the Foreign Function Interface (FFI).

Sentry also offers higher-level SDKs for platforms with built-in support for native crashes:

We recommend using the Sentry Native SDK, which has built-in support for both Google Breakpad and Google Crashpad. However, if you would like to use Sentry with a third-party framework directly without using the Native SDK, see the following resources:


The Native SDK currently supports Windows, macOS, Linux, and Android.

To build the SDK, download the latest release of the SDK from the Releases page. The SDK is managed as a CMake project, which additionally supports several configuration options, such as the backend to use.

For example, CMake can be used like this (on macOS):

# configure the cmake build into the `build` directory, with crashpad (on macOS)
cmake -B build -D SENTRY_BACKEND=crashpad
# build the project
cmake --build build --parallel
# install the resulting artifacts into a specific prefix
cmake --install build --prefix install
# which will result in the following (on macOS):
exa --tree install
├── bin
│  └── crashpad_handler
├── include
│  └── sentry.h
└── lib
   ├── libsentry.dylib
   └── libsentry.dylib.dSYM


After completing the project setup in Sentry, it shows the Data Source Name (DSN). It looks similar to a standard URL, and contains all configuration for the SDK.

Import and initialize the Sentry SDK early in your application setup:

#include <sentry.h>

int main(void) {
  sentry_options_t *options = sentry_options_new();
  sentry_options_set_dsn(options, "");

  /* ... */

  // make sure everything flushes

Alternatively, the DSN can be passed as SENTRY_DSN environment variable during runtime. This can be especially useful for server applications.


Now that SDK setup is complete, verify that all configuration is correct. Start by capturing a manual event:

  /*   level */ SENTRY_LEVEL_INFO,
  /*  logger */ "custom",
  /* message */ "It works!"

Once the event is captured, it will show up on the Sentry dashboard.

You can edit this page on GitHub.