Hi everyone,
I am trying to analyze the crash folder a user has sent to me but I have to admit, I don’t know how to do it.
I have learned so far that dbg files can be analyzed by WinDbg or Visual Studio (I am using the latter).
So I opened the crash.dbg in Visual Studio and hit “Debug with Native only”. From what I gathered you can only Debug .NET runtimes prior to .NET 4 in Native mode.
But now I am at a loss. The callstack I am getting is this:
FarmForYourLife.exe!CollectAndProduceGameObjectHierarchy(Unity::GameObject go, Transform * transform, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs) Line 54 C++
FarmForYourLife.exe!CollectAndProduceGameObjectHierarchy(Unity::GameObject go, Transform * transform, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs) Line 79 C++
FarmForYourLife.exe!CollectAndProduceClonedIsland(Object o, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > * remappedPtrs) Line 116 + 0x11 bytes C++
FarmForYourLife.exe!CloneObjectImpl(Object * object, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > ptrs) Line 182 C++
FarmForYourLife.exe!InstantiateObject(Object inObject, const Vector3f worldPos, const Quaternionf worldRot, vector_map<long,long,std::less<long>,stl_allocator<std::pair<long,long>,97,4> > ptrs) Line 262 + 0xa bytes C++
FarmForYourLife.exe!InstantiateObject(Object inObject, const Vector3f worldPos, const Quaternionf worldRot) Line 295 C++
FarmForYourLife.exe!Object_CUSTOM_INTERNAL_CALL_Internal_InstantiateSingle(ScriptingObjectOfType<Object> data, const Vector3f pos, const Quaternionf rot) Line 38 C++
081f59d0()
FarmForYourLife.exe!_strnicoll_l(const char * _string1, const char * _string2, unsigned int count, localeinfo_struct * plocinfo) Line 68 + 0x10 bytes C++
03a20000()
FarmForYourLife.exe!x_ismbbtype_l(localeinfo_struct * plocinfo, unsigned int tst, int cmask, int kmask) Line 219 C++
FarmForYourLife.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int nCmdShow) Line 6 + 0x15 bytes C++
FarmForYourLife.exe!__tmainCRTStartup() Line 275 + 0x1c bytes C
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
And while this tells me that it crashed on an Instantiate call, is there any way I can dig further to see what exactly went wrong? I have built my Game as Development Build and also selected Script Debugging, so I have the UnityPlayer_Symbols.pdb file, but tbh I have no idea what to do with this file. Or if it is needed at all.
I assume the 081f59d0() and 03a20000() adresses somehow point to my code. But I could be completely off there. But if I’m not, is there a way to see what line of my C# code triggered this error? Do I have to link the Symbols somehow or am I completely wrong with my assumptions and this is as much information I can get from these files?
As a next step I will be throwing Debug calls around all Instantiate functions, but I wanted to ask if there is a better way to get more information out of the crash.dmp?
Cheers
Oliver