Symbol Debugger

The Symbol Debugger program is used to assist in syncing the files required for remotely debugging a crashed application on an artist or level-designer machine as well as minidump files generated from crashes of build-machine generated builds.

Symbol Debugger

The Symbol Debugger utilizes source indexing of builds generated by the build system and a local symbol store to allow debugging without requiring syncing source files to the time the build was made.

Debugging a minidump file from a crash report is now as easy as simply dragging the dmp file and dropping it onto the Symbol Debugger app. (There is some setup required to properly utilize the Symbol Debugger. This will be explained later in this document.)

UI Description

Symbol Debugger UI

  1. Method Selection

  2. Method Input

  3. Symbol Store

  4. Platform

  5. Engine Version

  6. Changelist Number

  7. Source Control Label

  8. Action Buttons

Method Selection

There are four methods allowed when running the Symbol Debugger. The current method is selected via the radio buttons in the section labeled Method Selection. Depending on the method selected, various controls will be enabled or disabled to allow for the user to enter more information. The following methods are supported:

Method Description
CrashDump This allows for processing a minidump file to determine the required files for debugging it, syncing those files from Perforce, and launching the debugger.
EngineVersion This allows for specifying the engine version of a crashed application which is used to determine the proper build label in source control. The required files can then be sunk and remote debugging of a crashed application can commence.
Changelist This allows for specifying the change list a crashed application was built from, syncing the required files, and remote debugging that application.
SourceLabel This allows for specifying the build label, syncing the required files, and remote debugging the crash application.

Method Input

The Method Input section provides a text box for entering the information required for the current method.

If EngineVersion, Changelist, or SourceLabel are selected, then you simply type the value into the text box.

When CrashDump is the selected method, the full path to a minidump file is expected in the text box. A File Open button is also displayed when this method is active, allowing for selecting a crash dump via a standard file selection dialog.

Symbol Store

The User Symbol Store section provides a text box for entering the location of the local symbol store to utilize when syncing the files required for debugging. This value will be retrieved from the Engine.ini file in the following section:

[Engine.CrashDebugHelper]
LocalSymbolStore=d:/Symbols/UE4

Currently, altering this entry in the application does not update the ini settings.

This value will also need to be utilized in Setting up Visual Studio .

Platform

The Platform section will contain the platform the build was made for. When the method is set to anything other than CrashDump, this value will have to be set by you to the proper platform string (ie, Win32 or Win64).

Engine Version

The Engine Version section will contain the engine version of the build of interest. If CrashDump, Changelist, or SourceLabel are the method, this field will not be editable but will contain the results determined by inspecting the selected method. If EngineVersion is the method, this field will be filled with the contents of the 'Method Input' text box upon commit.

Changelist Number

The Changelist Number section will contain the changelist number of the build of interest. If CrashDump, EngineVersion, or SourceLabel are the method, this field will not be editable but will contain the results determined by inspecting the selected method. If Changelist is the method, this field will be filled with the contents of the 'Method Input' text box upon commit.

Source Control Label

The Source Control Label section will contain the engine version of the build of interest. If CrashDump, EngineVersion, or Changelist are the method, this field will not be editable but will contain the results determined by inspecting the selected method. If SourceLabel is the method, this field will be filled with the contents of the 'Method Input' text box upon commit.

Action Buttons

The Action Buttons section contains the buttons that trigger various actions. They are enabled depending on the current status of the selected method. The following buttons are present:

Button Description
Inspect The Inspect button is used to evaluate the supplied information and determine the source control label of the build. It will be enabled if the entered information is enough for the current method to be evaluated. For example, if CrashDump is the selected method, simply having set a crash dump file name and local symbol store is all that is required. If any other method is active, however, the Platform field will have to be filled in as well.
Sync Once a valid build label has been found, the Sync button will become enabled. When clicked, all the files required for debugging will be synced from source control into the local symbol store location.
Debug Currently only valid for CrashDump evaluation, when clicked, the Debug button will launch the debugger with the supplied minidump.

Setting up Visual Studio

Local Symbol Store

The local symbol store you wish to use has to be setup in Visual Studio as well. This requires adding the path (including the platforms of interest) to the Symbol file locations in the Debugging Settings.

Here is an example setting for the symbol store in the .ini example from the Symbol Store section:

Set Symbol Store

In order for the debugger to fetch the correct source files for the pdb files being debugged, you will also need to enable the source server. This is found in the Debugging settings under General:

Enable Source Server

The final step in preparing Visual Studio is to let it know that P4.exe is a trusted command. (If you do not, you will be continuously peppered with dialogs about letting P4 fetch source files.) This is accomplished by adding a file named srcsrv.ini to the following folder:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE (for Visual Studio 2013)
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE (for Visual Studio 2012)
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE (for Visual Studio 2010)

The contents of this file should be:

[trusted commands]
p4.exe=c:\Program Files\Perforce\p4.EXE