Debug symbols in Crash Reporter

Hi,
we have a team consisting of programmers, designers and art. When the game crashes while not running from visual studio the Crash Reporter shows the callstack without symbols regardless the .pdb files are on every machine. How can I load the symbols for the crash reporter? Or is there any other way to debug crashes once they occur without visual studio connected? Thanks for your help.

Hey -

You can look at the log file from the crash for additional information. This wiki page, A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums , explains where the log files can be found depending on where the crash occurred. Additionally you can use a source build of the engine from GitHub which may provide more info as well. The following wiki page details how to get and use engine source code from GitHub. A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums

Cheers

1 Like

Hi.

That’s strange. If you have the pdbs, the crash report client should parse the minidump and display the callstack.
The same callstack should be also printed to the log file.

Where are the symbols? They should be in the same location as the executables.
You can also check the log from the crash report client. (C:\Users\AppData\Local\CrashReportClient\Saved\Logs). Check lines tagged as ‘LogCrashDebugHelper’.

Hi,

Here is my log file:

The callstack is not printed in the log file, it only shows “LogCrashDebugHelper:Warning: … callstack generated!”
As we can see the CrashReportClientLog sets symbol path to everything but the folder where the compiled game library with corresponding pdb is placed.
Apprat from that there is an entry saying “LogCrashDebugHelper:Warning: bUsePDBCache is disabled” whatever that means…

Hello,
I don’t have a problem to see the callstack on my machine since I always run from Visual Studio, and I use the source build at all times when working in UE4. The thing is that I would like to see the callstack of a crash on a different machine without the source build. I guess that this is the main purpose of the Crash Reporter, isn’t it? Currently I have to reproduce the crashes myself which is just nonproductive.

Are you sure that the executables match the pdbs?
Can you give me more details about your build setup?

You can try something like this:
Run the game on a designer’s machine, type in the console ‘debug crash’.
A new crash will be saved in : C:\Users[user]\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_UE4-[gamename].
Copy and open the .dmp file in the visual studio.
Get the executable and the pdbs from the build.
‘Set symbol paths’ and debug the minidump.

If your pdbs and executables are ok, you will get the correct callstack.

Thanks, I’ll try to do that. Regarding the pdb’s matching the executables I’m sure they match since I always submit a fresh build with pdb’s attached.
I’ll come back once I’ve checked the minidump in visual studio.

Hi, I didn’t have any crash issue until today so frankly speaking I forgot about trying out your suggestion :slight_smile:

Anyways I got the crash .dmp file and loaded it in visual studio. After loading my pdbs the callstack was correct and I could identify the problem just from the minidump, which means that apparently the pdbs match with the executables on designers machines.

Since I managed to fix the crash without reproducing it on my machine I could say that this is good enough, though It still would be great to see the callstack on designers machine, since sometimes you can tell where’s the problem just from the callstack.

Cool, in the meantime check the latest version.

Hey, did you ever find a solution to this?

Hi.
Nope, it only shows the engine callstack and for my project binaries it only displays the project name followed by memory hex.

Game specific callstacks will be fixed for 4.9 release.

Hello Jarosław, has this been fixed? I have a similar issue: all engine entries in the callstack are fully described, but for game code I only get the dll name. Symbols are loaded into VS so they’re there. I’ve tracked it down to FWindowsPlatformStackWalk::ProgramCounterToSymbolInfo receiving failures from SymGetSymFromAddr64 and SymGetLineFromAddr64, not really sure how I can diagnose it further.

edit: found it. I needed to set DetailedCallstacksInNonMonolithicBuilds to true in the Core.System section of DefaultEngine.ini. Any idea why it’s off by default? Haven’t found any documentation.

edit2: I have submitted a pull request to set it to true by default.