I am trying to get a full stack trace from my dmp files, so I can debug a few crashes I have gotten with my packaged game.
I am using visual studio to open up the minidumps (I also tried DebugDiag and WinDbg but didn’t have luck with those either).
I have checked “Include Debug Files” in Project Settings → Packaging
I have added the following symbol paths
C:/OmniwarSync3/FPSGame/Binaries/Win64 contains my exe and pdb
C:\UE-Binaries\Binaries contains the entire Engine/Binaries directory from the build machine (about 10GB). I’m not sure if this was necessary, but I brought it over after getting this source not available error because I figured it couldn’t find core pdb files that it needed.
I ran the FPSGame-Win64-DebugGame.exe and typed debug crash into the console. This created a dmp file that I could debug with visual studio.
I opened the resulting dmp file in visual studio, added the symbol paths shown above, and clicked Debug with Native Only. However, this gives me a source not available.
My build machine has the source engine of the engine. Which I build the game against via jenkins.
I already have the editor symbols for debugging downloaded. I’m pretty sure that is only used for when you are debugging a non-packaged game tho. I can debug core code just fine prior to packaging. The issue is when I debug dump files of a packaged game. I have a build machine that has the engine from source (github) and this is what I build with. I develop on a different machine that just has the binary version of the engine (with debug symbols downloaded).
I’ve never tried debugging the dmp files coming out of UE4 before but I can try looking into this. I do know that our dmp files don’t include a lot of information such as the source context to save on storage space but from what I remember it contains everything needed to debug it when you have the source available. The source that needs to be available is the project itself as well, not just the engine’s source.
I have the source available, since it is my project. Do you know how I tell VS to use my source when debugging the dmp? I am hoping to get a full stack trace, specifically where it bubbles up into my project code. So I can see where the issue is in MY code.
I am running the exe, crashing, debugging, and opening the dmp file on my development machine. This machine has the binary version of ue4 on it and is where I develop all of my code with visual studio. So I do have the source locally (it’s not a full representation of the engine on github, but it does have everything the binary version has). I then push my project to a git repo.
is on my build machine. It does a pull from git and then runs the following commands to build the client and server versions of the game.
You do have the source available but from what I gather, that’s not locally. Usually the workflow for debugging dmps that have been generated on another computer is to use the Symbol Debugger (although you’ve already mentioned that it isn’t an option) with Perforce to debug it. I’ll need to do some testing but as long as both the computer that did the crashing and the debug computer have the same project and editor source, it should be possible although the filepath of all of it may be key to getting it to work correctly.
If you do all of the actions locally, such as the building, the crashing, and the debugging, just opening the dmp file and hitting Debug With Native Only should work, although from your mention of using a build machine/jenkins, I’m assuming this isn’t the case.
Hm, that in particular could be part of the problem. Since you don’t have a source build of the engine on your development machine, you lack the source code related to even building for Client or Server, meaning that there could be some missing source code that you’re not able to access.
It could also just be the fact of it being built on Source and then trying to debug it on a computer without that Source build in general. I can try testing that workflow but it’ll take me a bit since I already have source/binary builds for all the current versions on my PC.
In the meantime, would you be able to test a couple of things? Firstly, try compiling (on your development machine) for Development, running the .exe, crashing, and trying to debug that dmp? Also, if you have the time, try getting the same source build your build machine is using on your development machine.
That’s correct. Even when using the Project Debugger, you need to have access to the same version of the engine that was the dmp was generated from.
If your client .exe files are compiled on 4.12.5 CL#3039270 Source that you got from Github, any machine that wants to debug a dmp generated by that .exe will also need 4.12.5 CL#3039270 Source. Even if it’s the same changelist as the Binary, a Binary build will not work as not all of the files that are generated by GenerateProjectFiles.bat for a Source build are present in a Binary build.
So you want me to run the build statements on my Development machine? That will require I clone down the github version of unreal onto my dev machine right? So I have to clone this down to every test machine I have? For debugging other users dmp files?
Ah okay that makes sense. I’m actually fine with debugging the dmp files on the build machine for now. So I should be able to run the exe on my dev machine, crash it, copy the dmp file over to my build machine, and debug it there?
Thank you Matthew, I appreciate you taking the time to explain this to me. I tested out crashing the exe on my dev machine and copying the dmp file over to my build machine and it is working. If you convert your comments to an answer I will go ahead and accept it
do you know about any issues with debugging .dmp files created by UE4 recently?
It always worked perfectly for me, but recently (the last ~3 weeks) it just stopped working. It probably is some kind of issue with some Visual Studio update (15.4+) and how UE4 generates the .dmp files. I also know about others that face the exact same problem recently.
Are you aware of any issue with this?
I’m not aware of any issues with debugging .dmp files at the moment, but I should be able to try testing this sometime soon. If you believe you’re running into a bug when doing this, please enter a new a bug report post explaining your process and what you’re experiencing. Link to this post so that we have some context.