Backtrace integrations using minidumps require symbol files in order to generate useful callstack information. One simple way to share these symbol files with Backtrace available for enterprise customers is integrating a custom symbol server.
Custom symbol servers integrated with Backtrace need to meet the following requirements:
- Follow Microsoft’s standard symbol structure (ie <url>/<object_name>/<debug_id>/<file>)
- A popular option to generate the files in this structure is using Windows symstore
- The symbol server must also have a web frontend to serve up the files via http(s)
- Popular candidates for this are nginx, AWS, and Google Cloud buckets
- Your Backtrace instance must have access to the server (ie, Firewall or other network rules may need to be adjusted)
Once symbol files are generated from a build, Windows symstore can be used to store the files in the Microsoft standard symbolstore structure. An example invocation of symstore looks like:
<WindowsSDKDir>\Debuggers\x86\symstore add /r /f <TargetDir>*.* /s <C:\path\to\my\custom\symstore> /t "<AppName>" /c "<Comment>" /v "<version>"
(replacing the bold values).
Here’s an example with an test application’s values and output:
c:\Program Files (x86)\Windows Kits\10\Debuggers\x86>symstore add /f C:\Users\mbreaux\source\repos\ConsoleApplication1\Debug\*.* /s c:\path\to\my\custom\symstore /t "Test" /c "Test" /v "22.214.171.124"
Finding ID... 0000000004
SYMSTORE: Number of files stored = 2
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 0
More information about this tool is available in Microsoft’s documentation. It may also be helpful to know that this can be added as a post build step in Visual Studio. To do so, add the appropriate command in the project’s property pages, under Build Events | Post-Build Event | Command Line.
The remaining steps are to upload those files to the server, and then configure the custom symbol server in Backtrace’s UI (see https://backtrace.zendesk.com/hc/en-us/articles/360040104652-Connecting-to-Symbol-Servers for more information).