Upload Breakpad symbol files to allow BugSnag to symbolicate minidumps.
For minidump files (generated when using Electron, Breakpad or Crashpad) the stacktrace contains raw address details for each frame.
In order to see the original file, line and method BugSnag requires Breakpad symbol files for the relevant modules.
If your application uses native libraries (aside from Electron and its helper libraries), you will need to generate and upload symbol files for each library and platform supported to see full stack traces for native crashes.
To be able to generate symbol files, firstly download the Breakpad source code (GitHub mirror) and then build the dump_syms
tool in the src/tools/{platform}
directory.
There is a prebuilt binary for Windows and an Xcode project for macOS.
Run the built dump_syms
tool with a path to the native library or generated symbol files. Generated symbol files include *.pdb
files on Windows and LLVM debug symbol maps (*.dSYM/**/DWARF/*
) files on macOS.
You will need to generate symbol files for each of your native libraries on each of the platforms that you support, including for different CPU architectures.
<path/to/dump_syms> <path/to/my/lib> > mylib.sym
<path/to/dump_syms> -g <path/to/dsym> -a x86_64 > mylib.sym
Use the -a
option if your library is built for contains multiple architectures.
<path\to\dump_syms>.exe <\path\to\my\lib>.pdb > mylib.sym
The symbol files can either be uploaded to BugSnag using Breakpad’s symupload
tool or manually via the API.
Breakpad provides a symupload
tool for uploading Breakpad symbol files to a target endpoint.
There is a prebuilt binary for Windows and an Xcode project for macOS.
The symupload
tool can be used to upload Breakpad symbol files to BugSnag by setting the upload URL to the API endpoint (including the project’s API key as a query parameter).
Here’s an example request with symupload
:
symupload </path/to/symbol/file> \
"https://upload.bugsnag.com/breakpad-symbol?api_key=<YOUR_API_KEY_HERE>&overwrite=true&project_root=C%3A%5Cworkspace%5Cmy_app"
To send symbol mapping files to BugSnag, POST them to https://upload.bugsnag.com/breakpad-symbol
(or the address of your upload server, if using BugSnag On-premise) with the following parameters:
Query Parameters:
api_key
- your BugSnag integration API key for this application. overwrite
(optional) - whether to overwrite any existing mappings for this version of your app.project_root
(optional) - URL encoded string representing the root path of the project on the filesystem where the application was built. This improves error grouping.Form Fields:
symbol_file
- the path to the Breakpad symbol file.version
(optional) - the file version of the module.os
(optional) - the operating system that the module was built for.cpu
(optional) - the CPU that the module was built for.debug_file
(optional) - the basename of the debug file.code_file
(optional) - the basename of the module.debug_identifier
(optional) - the debug file’s identifier.product
(optional) - the product name.The API is compatible with Breakpad’s symupload
tool. Only the api_key
and symbol_file
fields are required to match the Breakpad Symbol file to a minidump.
Here’s an example request with curl:
$ curl --http1.1 \
"https://upload.bugsnag.com/breakpad-symbol?api_key=<YOUR_API_KEY_HERE>&overwrite=true&project_root=C%3A%5Cworkspace%5Cmy_app" \
-F symbol_file=@/path/to/symbol/file \
-F version=1.2.3 \
-F os=windows \
-F cpu=x86 \
-F debug_file=app.pdb \
-F code_file=app.exe \
-F debug_identifier=11111111BBBB3333DDDD555555555555F \
-F product=MyApp
If the file is accepted then an HTTP 200 response will be returned with the body “OK”.
If not, there are several possible problems which will be indicated with an HTTP 4XX response:
overwrite
parameter.api_key
parameter is missing.symbol_file
parameter is missing.