How to Upload Symbol Files with Symbol-Upload

Overview πŸ‘€

Symbol-upload is a cross-platform application that automatically uploads symbol files as part of your build process and is the successor of SendPdbs. Each build of your product that sends crash reports must have an exact set of matching symbol files uploaded to BugSplat.

The symbol-upload tool can be installed by npm and used as a CLI tool or a javascript library. We also provide a GitHub Action that can be added to your build workflow.

npm i -g @bugsplat/symbol-upload

Alternatively, you can use one of the following terminal commands to download prebuilt binaries of symbol-upload, or download with your web browser via the GitHub releases page.

Windows

Invoke-WebRequest -Uri "https://app.bugsplat.com/download/symbol-upload-windows.exe" -OutFile "symbol-upload-windows.exe"

macOS

curl -sL -O "https://app.bugsplat.com/download/symbol-upload-macos" && chmod +x symbol-upload-macos

Linux

curl -sL -O  "https://app.bugsplat.com/download/symbol-upload-linux" && chmod +x symbol-upload-linux

A group of symbols identified by their application name and version is called a symbol store. Symbol-upload automatically creates a new symbol store each time you upload symbols to a unique application and version combination. BugSplat's backend automatically removes symbols that haven't been accessed recently. Using our web application, you can manually delete a symbol store. Send symbols to BugSplat for every build on your build/integration server. There is no limit on the number of symbols you can post to BugSplat. However, by default, each symbol file must be smaller than 4 GB.

Using symbol-upload πŸ§‘β€πŸ’»

Running symbol-upload in a command window without any arguments shows the following usage information:

Example

The following is an example of how to invoke symbol-upload and search a directory recursively for .dll, .pdb, and .exe files. Replace the values of your-bugsplat-database, your-email, and your-password with your BugSplat database, email, and password. You can specify a glob for the -f argument to match for files based on a pattern.

You can use the -r flag to remove a symbol store instead of uploading. This is helpful when you create a new build but don't want to increment the build number.

Authentication

Credentials can be provided to symbol-upload via the -u and -p command-line arguments. OAuth2 Client ID and Client Secret credentials can also be provided for authentication via the -i and -s arguments and are created on the OAuth Integrations page.

Apple

MacOS and iOS builds typically generate .app or .xcarchive files. To upload bundled .dSYM files, point symbol-upload at the .app or .xcarchive file, and use a glob that instructs symbol-upload to search for .dSYM files recursively.

Dump Syms

BugSplat can generate Crashpad symbol files as part of the upload process. The Crashpad symbol files have a .sym format and are useful for cross-platform applications. BugSplat has integrated Mozilla's dump-syms into symbol-upload, which allows developers to skip building Breakpad. To generate a .sym file at upload time, specify the -m flag when invoking symbol-upload.

Self-Hosted Symbol Servers

The symbol-upload tool can be used to create a SymSrv directory structure for Windows symbols that is compatible with both BugSplat and Microsoft Visual Studio. Additionally, symbol-upload can also create a SymSrv directory structure for macOS and Crashpad symbols that is compatible with BugSplat.

To upload symbols to a local directory, provide the -l flag and a path where the symbols will be copied.

Next, use a sync tool to upload the directory to a cloud services provider. The following is an example that uses s3 sync via the AWS CLI.

To connect BugSplat to your self-hosted symbol server, please refer to our Symbol Server documentation.

GitHub Actions

The symbol-upload repo also includes a GitHub Action that's compatible with the default Windows, macOS, and Linux images. Here's a snippet you can add to your workflow:

We have also created an example repo demonstrating how to use the @bugsplat/symbol-upload action to upload symbols to BugSplat.

Improving Upload Speeds

Customers located far away from our US-East hosting location, especially those with high-latency and high-bandwidth connections, sometimes report slow upload speeds. We have several reports of significantly faster uploads after following the advice in the Microsoft technical note: https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/tcpip-performance-known-issues

Last updated

Was this helpful?