Hello,
I’m trying to setup a symbol store to house all the .pdb files.
I’ve been populating the symbol store with the command WinDbg from WinSDK:
symstore.exe" add /r /f c: rees\rs1\Engine\Binaries /s I:\stuff\unreal_symbols /t “Unreal Engine 4.4” /v “4.4” /c “From Epic Perforce”
It appears that the symbol store gets populated
On a machine that has the .pdb’s stripped from Binaries directory, I have set the environment variable:
_NT_SYMBOL_PATH=srvd:\SymbolsI:\stuff\unreal_symbols
I’ve also updated BaseEngine.ini according to:
https://udn.unrealengine.com/docs/ue4/INT/Programming/Development/Tools/SymbolDebugger/index.html
where
LocalSymbolStore=I:\stuff\unreal_symbols
When a crash occurs, the Unreal Engine 4 Crash Reporter comes up, but it says
“You do not have any debugging symbols required to display the callstack for this crash.”
If I copy all the .pdb’s into the Binaries directory, then I get a callstack in Unreal Engine 4 Crash Reporter.
What are the settings I should use to get the symbol store working with UE4
Thanks,
Apologies for bumping such an old thread, did you or does anyone else have a solution to this? I have an identical issue with my setup.
Kind regards,
KamikazeXeX
I had similar issues. The solution was A) Copy symsrv.dll next to dbghelp.dll (see c++ - SymGetSymFromAddr64 works but SymGetLineFromAddr64 fails with error code 487 - Stack Overflow), B) Under /Script/UnrealEd.CrashReporterSettings in the relevant ini file, specify my symbol server path via “RemoteStorage” and my local cache path via “DownstreamStorage”.
I hope this helps. I’m not familiar with “LocalSymbolStore”.
Regarding B… I actually didn’t like duplicating my symbol server paths in that ini file, so I ended up modifying GetRemoteStorage() in WindowsPlatformStackWalk.cpp to do the following, in place of “else return FString()”:
FString SymbolPathEnvironmentVariable;
{
wchar_t* RawSymbolPathEnvironmentVariable = nullptr;
size_t Length;
errno_t Error = _wdupenv_s(&RawSymbolPathEnvironmentVariable, &Length, L"_NT_SYMBOL_PATH");
if (Error == 0 && RawSymbolPathEnvironmentVariable != nullptr && Length > 0)
{
SymbolPathEnvironmentVariable.Append(RawSymbolPathEnvironmentVariable);
}
free(RawSymbolPathEnvironmentVariable);
}
return SymbolPathEnvironmentVariable;