You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Added the system image paths to the image pathname because when the issue happens, looking at ETW event with SysInternal process monitor, we can see that CRC is scanning the engine folder (with all assets) to find the system images. - This is a specuative fix because the bug doesn't always manifest and it didn't for me when I implemented this fix and didn't anymore for the QA that reported the issue once I proposed this fix. [CL 16329089 by Patrick Laflamme in ue5-main branch]
67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
class FCrashInfo;
|
|
class FCrashModuleInfo;
|
|
|
|
/**
|
|
* Windows implementation of stack walking using the COM interface IDebugClient5.
|
|
*/
|
|
struct FWindowsPlatformStackWalkExt
|
|
{
|
|
/** Default constructor. */
|
|
FWindowsPlatformStackWalkExt( FCrashInfo& InCrashInfo );
|
|
|
|
/** Destructor. */
|
|
~FWindowsPlatformStackWalkExt();
|
|
|
|
/** Initializes the COM interface to grab stacks. */
|
|
bool InitStackWalking();
|
|
|
|
/** Shutdowns COM. */
|
|
void ShutdownStackWalking();
|
|
|
|
/** Sets the options we want for symbol lookup. */
|
|
void InitSymbols();
|
|
|
|
/** Grabs the branch relative path of the binary. */
|
|
static FString ExtractRelativePath( const TCHAR* BaseName, TCHAR* FullName );
|
|
|
|
/** Gets the exe file versions and lists all modules. */
|
|
void GetExeFileVersionAndModuleList( FCrashModuleInfo& out_ExeFileVersion );
|
|
|
|
/** Set the symbol paths based on the module paths. */
|
|
void SetSymbolPathsFromModules();
|
|
|
|
/** Gets detailed info about each module. */
|
|
void GetModuleInfoDetailed();
|
|
|
|
/** Check to see if the stack address resides within one of the loaded modules i.e. is it valid?. */
|
|
bool IsOffsetWithinModules( uint64 Offset );
|
|
|
|
/** Extract the system info of the crash from the minidump. */
|
|
void GetSystemInfo();
|
|
|
|
/** Extracts the thread info from the minidump. */
|
|
void GetThreadInfo(){}
|
|
|
|
/** Extracts info about the exception that caused the crash. */
|
|
void GetExceptionInfo();
|
|
|
|
/** Gets the callstack of the crash. */
|
|
void GetCallstacks();
|
|
|
|
/** Opens a minidump as a new session. */
|
|
bool OpenDumpFile( const FString& DumpFileName );
|
|
|
|
protected:
|
|
/** Reference to the crash info. */
|
|
FCrashInfo& CrashInfo;
|
|
|
|
/** List of modules that are not from the engine. */
|
|
TArray<FString> SystemModuleNames;
|
|
};
|