From cc4b1b98bf16fc65e7d4d3aff2c3fb6e6a2db0ab Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Wed, 13 Nov 2019 13:40:33 -0800 Subject: [PATCH 1/6] update --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b01b89f..a90c2f7 100644 --- a/README.md +++ b/README.md @@ -48,4 +48,7 @@ You need to always run `bin/example` before `setup_release` The [memset](http://www.cplusplus.com/reference/cstring/memset/) invocation in `src/example.c` is what causes a native crash -sentry-native in the news https://blog.sentry.io/2019/09/26/fixing-native-apps-with-sentry \ No newline at end of file +sentry-native in the news https://blog.sentry.io/2019/09/26/fixing-native-apps-with-sentry + +## Gif +![gif](screenshots/sentry-native-2-events-150.gif) \ No newline at end of file From 3ca58fe620304d251b4e7554bde6910ebf6ba22a Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Wed, 13 Nov 2019 13:50:20 -0800 Subject: [PATCH 2/6] minidumo demo breakpad --- README.md | 21 +++++++++------------ windows.txt | 11 ++--------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index a90c2f7..c090213 100644 --- a/README.md +++ b/README.md @@ -22,17 +22,7 @@ This project makes use of **sentry-native** in its packaged release form. It is `make clean` only needs to be run if you're trying to re-run `make bin/example` ## Windows -Do everything in Visual Studio Code and set the DSN first. -1. download Premake5.exe -2. cd premake5 and -premake5.exe vs2017 <---creates a solution, a wrapper around projects that ref each other -3. open the .sln in VS -4. click 'ok' for accepting the upgrade by VS. -5. rt-click 'example-crashpad' project and click Build -6. can 'Set as Default Project' for when you click Run Button at the top -7. rt-click 'crashpad-handler' project and click Build -8. the builds go into /sentry-native/premake/bin -9. sentry-native/premake, spwan a cmd, bin\Debug\example_crashpad.exe +[*These instructions are still under development*](./windows.txt) ## Event Examples [Symbolicated stacktrace of a native crash](screenshots/native-crash-stacktrace.png) @@ -51,4 +41,11 @@ The [memset](http://www.cplusplus.com/reference/cstring/memset/) invocation in ` sentry-native in the news https://blog.sentry.io/2019/09/26/fixing-native-apps-with-sentry ## Gif -![gif](screenshots/sentry-native-2-events-150.gif) \ No newline at end of file +![gif](screenshots/sentry-native-2-events-150.gif) + +## Minidumps +If you want to perform a `curl` request directly against our Sentry API and pass the .dmp in the payload... + +https://docs.sentry.io/platforms/native/minidump/#minidump-additional + + diff --git a/windows.txt b/windows.txt index 7d5b258..d2d32c7 100644 --- a/windows.txt +++ b/windows.txt @@ -1,11 +1,5 @@ - -VM with WIndows, mounting into Mac - WINDOWS -no makefile like on mac -use VIsual STudio. VS solution - - +Do everything in Visual Studio Code and set the DSN first <-- TODO `make configure fetch` not on windows so run: Windows steps 1. download Premake5.exe @@ -19,7 +13,6 @@ premake5.exe vs2017 <---creates a solution, a wrapper around projects that ref e 8. the builds go into /sentry-native/premake/bin 9. sentry-native/premake, spwan a cmd, bin\Debug\example_crashpad.exe -TODO set DSN -------------------------------- + we distribute 2017 .sln opens in VisualStudio \ No newline at end of file From 2f1a1fdc96e96e09e0a94055fd5d1436db0a14e1 Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Wed, 13 Nov 2019 13:52:50 -0800 Subject: [PATCH 3/6] curl command works with upload_file_minidump --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index c090213..a2716b8 100644 --- a/README.md +++ b/README.md @@ -48,4 +48,13 @@ If you want to perform a `curl` request directly against our Sentry API and pass https://docs.sentry.io/platforms/native/minidump/#minidump-additional +-F 'sentry[tags][mytag]=value' +Minidumps Endpoint for a `sentry-native` project: +``` +curl -X POST \ + 'https://sentry.io/api/1720457/minidump/?sentry_key=b5ceabee4e4a4cd6b21afe3bd2cbbed4' \ + -F upload_file_minidump=@b066e1b0-68ef-4d7a-8f59-e59ad0e63d8d.dmp +``` + +-j4 \ No newline at end of file From 20c961ccd1f896a76bb23ea61233714581fc4d47 Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Wed, 13 Nov 2019 14:11:15 -0800 Subject: [PATCH 4/6] Latency noted: Event Time vs Processing Time --- screenshots/event-time-vs-processing-time.png | Bin 0 -> 51977 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshots/event-time-vs-processing-time.png diff --git a/screenshots/event-time-vs-processing-time.png b/screenshots/event-time-vs-processing-time.png new file mode 100644 index 0000000000000000000000000000000000000000..366a798a08931d8a9218bf0865f11e319a739321 GIT binary patch literal 51977 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 literal 0 HcmV?d00001 From 5354d5b70f99b65249d56662809ddff5480f79d6 Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Thu, 14 Nov 2019 17:59:01 -0800 Subject: [PATCH 5/6] POST payload w/ Release + Tags --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a2716b8..b52efbe 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +# sentry-native ## Setup 1. `git clone --recurse-submodules git@github.com:sentry-demos/sentry-native.git` 2. install `sentry-cli 1.49.0z` from https://github.com/getsentry/sentry-cli/releases/ and https://docs.sentry.io/cli/installation/. You can run `yarn global add @sentry/cli` @@ -43,18 +44,59 @@ sentry-native in the news https://blog.sentry.io/2019/09/26/fixing-native-apps-w ## Gif ![gif](screenshots/sentry-native-2-events-150.gif) -## Minidumps -If you want to perform a `curl` request directly against our Sentry API and pass the .dmp in the payload... +# Minidumps -https://docs.sentry.io/platforms/native/minidump/#minidump-additional +You can `curl` your .dmp files directly to the Sentry API. --F 'sentry[tags][mytag]=value' +[Additional documentation - docs.sentry.io native/minidumps](https://docs.sentry.io/platforms/native/minidump/#minidump-additional) -Minidumps Endpoint for a `sentry-native` project: +## Setup +First you need to obtain your own Minidumps Endpoint for your Sentry Project +1. Project Settings > DSN Keys, click 'Expand' > Minidump Endpoint is given +2. You will use this api endpoint as the basis for your curl command in the next steps +``` +curl -X POST \ + \ +``` +3. Produce your .dmp's by running a Mac [sentry-native](#sentry-native) crash. They will get stored in `./sentry-db/completed` +``` +-F upload_file_minidump=@.dmp +``` + +## Run +1. `cd ./sentry-db/completed` +2. ``` curl -X POST \ 'https://sentry.io/api/1720457/minidump/?sentry_key=b5ceabee4e4a4cd6b21afe3bd2cbbed4' \ -F upload_file_minidump=@b066e1b0-68ef-4d7a-8f59-e59ad0e63d8d.dmp ``` +3. try with JSON for release + tags +``` +curl -X POST \ + 'https://sentry.io/api/1720457/minidump/?sentry_key=b5ceabee4e4a4cd6b21afe3bd2cbbed4' \ + -F upload_file_minidump=@40467503-6652-4dd5-8c7b-d63c7e29a649.dmp \ + -F 'sentry={"release":"1.2.3","tags":{"myotag":"value"}}' +``` +4. try with Line-separated ("flattened") for release + tags + +#### What Native Crash Looks Like? +- the 'myotag' tag appeared under heatmap, but not under TAGS section +- 'release' appeared on rt-side sidebar and heatmap, but not under TAGS section <-- could be a general upload problem +- the 'histag' did same, but 'myotag' is still there? + +#### What Capture Message Looks Like? +It is a .dmp sent with the Capture Message? Does Capture Message return an exit status to the C/C++ function? +- no tag and no release shown + +#### This curl dmp is producing 1 or 2? +Looks like it's producing 2, interesting. + +#### We did for 'release' and 'tags' - try for other things? +- breadcrumbs (a lot of work, formatting-wise), etc. +- are release+tags sufficient for the time being? that's what our documentation covers --j4 \ No newline at end of file +#### Note +- mention that you can do it with your own .dmp? any .dmp will work? +- Event time and Processing time may differ, depending on how long you wait between generating the event (native crash) and curl'ing it to sentry.io/api. +![event-latency](screenshots/event-time-vs-processing-time.png) From 0862d8c3edb81a00e584d72a4c7215e6e9688b40 Mon Sep 17 00:00:00 2001 From: William Capozzoli Date: Mon, 18 Nov 2019 19:51:22 -0800 Subject: [PATCH 6/6] dmp file name not hard-coded anymore --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 0272798..0c66c4e 100644 --- a/Makefile +++ b/Makefile @@ -44,3 +44,8 @@ clean_db: run_app: SENTRY_DSN=https://b5ceabee4e4a4cd6b21afe3bd2cbbed4@sentry.io/1720457 bin/example + +curl_minidump: + cd ./sentry-db/completed; curl -X POST \ + 'https://sentry.io/api/1720457/minidump/?sentry_key=b5ceabee4e4a4cd6b21afe3bd2cbbed4' \ + -F upload_file_minidump=@`ls` \ No newline at end of file