# Google Breakpad Integration

## Overview

After crash occurs and intercepted by **breakpad** it creates `minidump` file (`*.dmp`) with useful crash related information. Extracting human readable information from `minidump` file format requires running of `minidump_stackwalk` tool with specially pre-generated symbol files on application binaries.

## Getting Readable Stack Trace from User Submitted Files

1. Original [breakpad repository](https://github.com/google/breakpad#getting-started-from-master) should be checked out on dev machine and built locally;
2. Use `dump_syms` tool to generate symbols file from application binary file:

```
google-breakpad/src/tools/linux/dump_syms/dump_syms ./ApplicationBinary > ./ApplicationBinary.sym
head -n1 ./ApplicationBinary.sym
```

Above command output may look something like this:

```
MODULE Windows x86_64 6EDC6ACDB282125843FD59DA9C81BD830 ApplicationBinary
```

1. To structure symbols file correctly you can do following next:

```
mkdir -p ./symbols/ApplicationBinary/6EDC6ACDB282125843FD59DA9C81BD830
mv ./ApplicationBinary.sym ./symbols/ApplicationBinary/6EDC6ACDB282125843FD59DA9C81BD830
```

1. Generate readable stack trace pointing to the place with crash by running `minidump_stackwalk` tool on minidump file with passing the path to previously generated symbol files:

```
google-breakpad/src/processor/minidump_stackwalk 09fd98ec-d55c-29e1-4ae067b0-4aaec0d6.dmp ./symbols
```

NOTES:

* symbols can be generated only for application binaries with debug info (`Debug` or `RelWithDebInfo`);
* warn users that dumps may contain sensitive infomatiom;
* (for wallet binaries) ask users to generate dumps locally instead of sharing raw `minidump` file publicly.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.qwertycoin.org/developer/google-breakpad-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
