Continuous Improvement in Native
If Sentry were a TV show, I think it would be Lassie. It’s your application’s best friend and everyone can understand it no matter what language they speak. Sentry gets help from the right people to make sure Timmy, I mean your application, is safe and sound.
Over the past few months, we improved our Native SDK significantly. Most notably, we increased platform compatibility through a major rewrite from C++ to C and by switching to the CMake build system. It is now easier than ever to integrate Crashpad, Breakpad, or our in-process stackwalker on all major platforms ranging from Windows, Linux, macOS, and Android.
Release Health for Native Applications
With our latest update, developers can now identify the exact moment their application started to degrade. Track crash-free sessions, crash-free users, version adoption, and other custom product usage metrics that you define. The best part: These metrics will get instantly tracked under the release tab once you update your SDK.
#include <sentry.h>
int main(void) {
sentry_options_t *options = sentry_options_new();
sentry_options_set_dsn(options, "https://4e0e4bac9ea54629ba5f506660b1c506@o87286.ingest.sentry.io/5290434");
sentry_init(options);
/* ... */
// make sure everything flushes
sentry_shutdown();
}
What’s that, Sentry? My desktop application is crashing? Right now?! How many users is it impacting? 28.9% of them?! And they’re seeing it right now!? I better fix it! (Queue intense music and v dramatic close-ups.)
Is this for you?
Native applications cover a wide range of use cases. Short command-line applications, large graphical user interfaces, long-running headless servers, and also games. The last thing you want is a large number of gamers to get smacked with a random error code after a new release. You want the opposite. You want to be able to contain that error, rollback, or patch and move forward to make sure your users can level up.
Tracking the health of those applications is important, especially for user-facing ones, which typically also run on a variety of platforms.
By surfacing this data about releases, developers can easily track the quality of each release across their entire user base. Does a release improve or regress in relation to its usage? Is a bugfix release successful in lowering the number of crashes? Release Health answers all these questions out of the box.
Need to keep a closer eye on a specific issue that crippled a release? The data from each release is powered by our insights tool, Discover. Simply click “Open in Discover” and you can save the query, pivot on any parameter, and define alerting logic so you can get notified of this specific issue.
Yes, We’re Open (Source)
Thank you community! Our Native SDK received a bunch of external contributions; some from our customers too. Because of your help, we now support breakpad and in-process backends on Windows, and crashpad and Linux. Quite honestly, we couldn't believe how many and how great contributions we received and couldn’t be more grateful for your commits/PRs.
Beyond C/C++
Rust generates native code, it can use any other C-compatible library, and vice versa. The ability to capture native crashes is especially valuable when interfacing with libraries written in other languages that do not offer the strong safety guarantees that Rust does.
We’re working closely with a third-party project, sentry-contrib-native, which exposes the Native SDK as an easy to use Rust crate. The project has also lead to numerous bugfixes in our native SDK as well.
In the near term, our Rust SDK will report on sessions, users, and version adoption. Look out for updates to our docs. If we tell our marketing team about it they’ll probably email, tweet, blog, in-app notify, and do “demand gen”. /shrug.
In the meantime, install our latest Native SDK, configure releases, and the next time your application locks itself in the virtual barn, Sentry will get help.
What’s that, Sentry? Our readers didn’t get any of the Lassie references? I should have referenced Full House because the reboot is on Netflix? Sentry, go find a slow query or something.