UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FGenericCrashContext Struct Reference

#include <GenericPlatformCrashContext.h>

+ Inheritance diagram for FGenericCrashContext:

Public Member Functions

CORE_API FGenericCrashContext (ECrashContextType InType, const TCHAR *ErrorMessage)
 
virtual ~FGenericCrashContext ()
 
CORE_API void SerializeContentToBuffer () const
 
const FString & GetBuffer () const
 
CORE_API void GetUniqueCrashName (TCHAR *GUIDBuffer, int32 BufferSize) const
 
CORE_API const bool IsFullCrashDump () const
 
virtual CORE_API void SerializeAsXML (const TCHAR *Filename) const
 
template<typename Type >
void AddCrashProperty (const TCHAR *PropertyName, const Type &Value) const
 
void SetCrashedProcess (const FProcHandle &Process)
 
void SetCrashedThreadId (uint32 InId)
 
CORE_API void SetNumMinidumpFramesToIgnore (int32 InNumMinidumpFramesToIgnore)
 
CORE_API void CapturePortableCallStack (void *ErrorProgramCounter, void *Context)
 
CORE_API void CaptureThreadPortableCallStack (const uint64 ThreadId, void *Context)
 
CORE_API void CapturePortableCallStack (int32 NumStackFramesToIgnore, void *Context)
 
virtual CORE_API void SetPortableCallStack (const uint64 *StackFrames, int32 NumStackFrames)
 
virtual CORE_API void GetPortableCallStack (const uint64 *StackFrames, int32 NumStackFrames, TArray< FCrashStackFrame > &OutCallStack) const
 
virtual CORE_API void CaptureModules ()
 
virtual CORE_API void GetModules (TArray< FStackWalkModuleInfo > &OutModules) const
 
virtual CORE_API void AddPortableThreadCallStacks (TConstArrayView< FThreadCallStack > Threads)
 
virtual CORE_API void AddPortableThreadCallStack (uint32 ThreadId, const TCHAR *ThreadName, const uint64 *StackFrames, int32 NumStackFrames)
 
virtual CORE_API void CopyPlatformSpecificFiles (const TCHAR *OutputDirectory, void *Context)
 
ECrashContextType GetType () const
 

Static Public Member Functions

static CORE_API void Initialize ()
 
static CORE_API void InitializeFromContext (const FSessionContext &Context, const TCHAR *EnabledPlugins, const TCHAR *EngineData, const TCHAR *GameData, const TCHAR *FilePathData, const FGPUBreadcrumbsSharedContext *GPUBreadcrumbs)
 
static CORE_API const FSessionContextGetCachedSessionContext ()
 
static CORE_API FString GetGameName ()
 
static bool IsInitalized ()
 
static bool IsOutOfProcessCrashReporter ()
 
static uint32 GetOutOfProcessCrashReporterProcessId ()
 
static void SetOutOfProcessCrashReporterPid (uint32 ProcessId)
 
static CORE_API void SetOutOfProcessCrashReporterExitCode (int32 ExitCode)
 
static CORE_API TOptional< int32GetOutOfProcessCrashReporterExitCode ()
 
static CORE_API FString GetTempSessionContextFilePath (uint64 ProcessID)
 
static CORE_API void CleanupTempSessionContextFiles (const FTimespan &ExpirationAge)
 
static CORE_API void SerializeSessionContext (FString &Buffer)
 
template<typename Type >
static void AddCrashProperty (FString &Buffer, const TCHAR *PropertyName, const Type &Value)
 
static CORE_API void AppendEscapedXMLString (FString &OutBuffer, FStringView Text)
 
static CORE_API void AppendEscapedXMLString (FStringBuilderBase &OutBuffer, FStringView Text)
 
static CORE_API void AppendPortableCallstack (FString &OutBuffer, TConstArrayView< FCrashStackFrame > StackFrames)
 
static CORE_API FString UnescapeXMLString (const FString &Text)
 
static CORE_API const TCHARGetCrashTypeString (ECrashContextType Type)
 
static CORE_API FString GetCrashGameName ()
 
static CORE_API const TCHARGetCrashConfigFilePath ()
 
static CORE_API const TCHARGetCrashConfigFolder ()
 
static CORE_API void PurgeOldCrashConfig ()
 
static CORE_API void SetEpicAccountId (const FString &EpicAccountId)
 
static CORE_API void ResetEngineData ()
 
static FEngineDataResetDelegateOnEngineDataResetDelegate ()
 
static CORE_API void SetEngineData (const FString &Key, const FString &Value)
 
static CORE_API void SetGPUBreadcrumbs (FGPUBreadcrumbCrashData &&Data)
 
static FEngineDataSetDelegateOnEngineDataSetDelegate ()
 
static CORE_API const TMap< FString, FString > & GetEngineData ()
 
static CORE_API void ResetGameData ()
 
static FGameDataResetDelegateOnGameDataResetDelegate ()
 
static CORE_API void SetGameData (const FString &Key, const FString &Value)
 
static FGameDataSetDelegateOnGameDataSetDelegate ()
 
static CORE_API const TMap< FString, FString > & GetGameData ()
 
static CORE_API void AddPlugin (const FString &PluginDesc)
 
static CORE_API void AddFile (const FString &AbsoluteSourcePath)
 
static CORE_API FString DumpLog (const FString &CrashFolderAbsolute)
 
static CORE_API void DumpAdditionalContext (const TCHAR *CrashFolderAbsolute)
 
static CORE_API void CopySharedCrashContext (FSharedCrashContext &Dst)
 
static CORE_API void SetMemoryStats (const FPlatformMemoryStats &MemoryStats)
 
static CORE_API void SetAnticheatProvider (const FString &AnticheatProvider)
 
static CORE_API void OnThreadStuck (uint32 ThreadId)
 
static CORE_API void OnThreadUnstuck (uint32 ThreadId)
 
static CORE_API bool CreateCrashReportDirectory (const TCHAR *CrashGUIDRoot, int32 CrashIndex, FString &OutCrashDirectoryAbsolute)
 
static CORE_API void SetEngineExit (bool bIsRequestExit)
 
static FAdditionalCrashContextDelegateOnAdditionalCrashContextDelegate ()
 
static CORE_API void CleanupPlatformSpecificFiles ()
 
static bool IsTypeContinuable (ECrashContextType Type)
 
static CORE_API void SetDeploymentName (const FString &EpicApp)
 
static CORE_API const TCHARGetDeploymentName ()
 
static CORE_API void SetCrashTrigger (ECrashTrigger Type)
 
static CORE_API void AddHeader (FString &Buffer)
 
static CORE_API void AddFooter (FString &Buffer)
 
static CORE_API void BeginSection (FString &Buffer, const TCHAR *SectionName)
 
static CORE_API void EndSection (FString &Buffer, const TCHAR *SectionName)
 
static CORE_API void AddSection (FString &Buffer, const TCHAR *SectionName, const FString &SectionContent)
 

Static Public Attributes

static CORE_API const ANSICHAR *const CrashContextRuntimeXMLNameA = "CrashContext.runtime-xml"
 
static CORE_API const TCHAR *const CrashContextRuntimeXMLNameW = TEXT( "CrashContext.runtime-xml" )
 
static CORE_API const ANSICHAR *const CrashConfigFileNameA = "CrashReportClient.ini"
 
static CORE_API const TCHAR *const CrashConfigFileNameW = TEXT("CrashReportClient.ini")
 
static CORE_API const TCHAR *const CrashConfigExtension = TEXT(".ini")
 
static CORE_API const TCHAR *const ConfigSectionName = TEXT("CrashReportClient")
 
static CORE_API const TCHAR *const CrashConfigPurgeDays = TEXT("CrashConfigPurgeDays")
 
static CORE_API const TCHAR *const CrashGUIDRootPrefix = TEXT("UECC-")
 
static CORE_API const TCHAR *const CrashReportOptionalAttachmentsDirName = TEXT("OptionalAttachments")
 
static CORE_API const TCHAR *const CrashContextExtension = TEXT(".runtime-xml")
 
static CORE_API const TCHAR *const RuntimePropertiesTag = TEXT( "RuntimeProperties" )
 
static CORE_API const TCHAR *const DeploymentNameTag = TEXT( "DeploymentName" )
 
static CORE_API const TCHAR *const PlatformPropertiesTag = TEXT( "PlatformProperties" )
 
static CORE_API const TCHAR *const EngineDataTag = TEXT( "EngineData" )
 
static CORE_API const TCHAR *const GameDataTag = TEXT( "GameData" )
 
static CORE_API const TCHAR *const RequestDataTag = TEXT( "RequestData" )
 
static CORE_API const TCHAR *const GameNameTag = TEXT( "GameName" )
 
static CORE_API const TCHAR *const EnabledPluginsTag = TEXT("EnabledPlugins")
 
static CORE_API const TCHAR *const UEMinidumpName = TEXT( "UEMinidump.dmp" )
 
static CORE_API const TCHAR *const NewLineTag = TEXT( "&nl;" )
 
static CORE_API const TCHAR *const CrashVersionTag = TEXT("CrashVersion")
 
static CORE_API const TCHAR *const ExecutionGuidTag = TEXT("ExecutionGuid")
 
static CORE_API const TCHAR *const CrashGuidTag = TEXT("CrashGUID")
 
static CORE_API const TCHAR *const IsEnsureTag = TEXT("IsEnsure")
 
static CORE_API const TCHAR *const IsStallTag = TEXT("IsStall")
 
static CORE_API const TCHAR *const IsAssertTag = TEXT("IsAssert")
 
static CORE_API const TCHAR *const CrashTypeTag = TEXT("CrashType")
 
static CORE_API const TCHAR *const ErrorMessageTag = TEXT("ErrorMessage")
 
static CORE_API const TCHAR *const CrashReporterMessageTag = TEXT("CrashReporterMessage")
 
static CORE_API const TCHAR *const AttendedStatusTag = TEXT("CrashReporterMessage")
 
static CORE_API const TCHAR *const SecondsSinceStartTag = TEXT("SecondsSinceStart")
 
static CORE_API const TCHAR *const BuildVersionTag = TEXT("BuildVersion")
 
static CORE_API const TCHAR *const CallStackTag = TEXT("CallStack")
 
static CORE_API const TCHAR *const PortableCallStackTag = TEXT("PCallStack")
 
static CORE_API const TCHAR *const PortableCallStackHashTag = TEXT("PCallStackHash")
 
static CORE_API const TCHAR *const IsRequestingExitTag = TEXT("IsRequestingExit")
 
static CORE_API const TCHAR *const LogFilePathTag = TEXT("LogFilePath")
 
static CORE_API const TCHAR *const ProcessIdTag = TEXT("ProcessId")
 
static CORE_API const TCHAR *const IsInternalBuildTag = TEXT("IsInternalBuild")
 
static CORE_API const TCHAR *const IsPerforceBuildTag = TEXT("IsPerforceBuild")
 
static CORE_API const TCHAR *const IsWithDebugInfoTag = TEXT("IsWithDebugInfo")
 
static CORE_API const TCHAR *const IsSourceDistributionTag = TEXT("IsSourceDistribution")
 
static constexpr int32 CrashGUIDLength = 128
 
static CORE_API const TCHAR *const CrashTypeCrash = TEXT("Crash")
 
static CORE_API const TCHAR *const CrashTypeAssert = TEXT("Assert")
 
static CORE_API const TCHAR *const CrashTypeEnsure = TEXT("Ensure")
 
static CORE_API const TCHAR *const CrashTypeStall = TEXT("Stall")
 
static CORE_API const TCHAR *const CrashTypeGPU = TEXT("GPUCrash")
 
static CORE_API const TCHAR *const CrashTypeHang = TEXT("Hang")
 
static CORE_API const TCHAR *const CrashTypeAbnormalShutdown = TEXT("AbnormalShutdown")
 
static CORE_API const TCHAR *const CrashTypeOutOfMemory = TEXT("OutOfMemory")
 
static CORE_API const TCHAR *const CrashTypeVerseRuntimeError = TEXT("VerseRuntimeError")
 
static CORE_API const TCHAR *const EngineModeExUnknown = TEXT("Unset")
 
static CORE_API const TCHAR *const EngineModeExDirty = TEXT("Dirty")
 
static CORE_API const TCHAR *const EngineModeExVanilla = TEXT("Vanilla")
 
static CORE_API const FGuid ExecutionGuid = FGuid::NewGuid()
 

Protected Member Functions

virtual bool GetPlatformAllThreadContextsString (FString &OutStr) const
 
virtual CORE_API const TCHARGetCallstackProperty () const
 

Static Protected Member Functions

static CORE_API const FString * GetEngineData (const FString &Key)
 
static CORE_API const FString * GetGameData (const FString &Key)
 
static CORE_API FString GenerateNewCrashGuidBase ()
 

Protected Attributes

FProcHandle ProcessHandle
 
ECrashContextType Type
 
uint32 CrashedThreadId
 
const TCHARErrorMessage
 
int NumMinidumpFramesToIgnore
 
TArray< FCrashStackFrameCallStack
 
TArray< FThreadStackFramesThreadCallStacks
 
TArray< FStackWalkModuleInfoModulesInfo
 

Detailed Description

Contains a runtime crash's properties that are common for all platforms. This may change in the future.

Constructor & Destructor Documentation

◆ FGenericCrashContext()

FGenericCrashContext::FGenericCrashContext ( ECrashContextType  InType,
const TCHAR ErrorMessage 
)

Default constructor. Optionally pass a process handle if building a crash context for a process other then current.

◆ ~FGenericCrashContext()

virtual FGenericCrashContext::~FGenericCrashContext ( )
inlinevirtual

Member Function Documentation

◆ AddCrashProperty() [1/2]

template<typename Type >
void FGenericCrashContext::AddCrashProperty ( const TCHAR PropertyName,
const Type Value 
) const
inline

◆ AddCrashProperty() [2/2]

template<typename Type >
static void FGenericCrashContext::AddCrashProperty ( FString &  Buffer,
const TCHAR PropertyName,
const Type Value 
)
inlinestatic

◆ AddFile()

void FGenericCrashContext::AddFile ( const FString &  AbsoluteSourcePath)
static

Adds a file to bundle with the crash report

◆ AddFooter()

void FGenericCrashContext::AddFooter ( FString &  Buffer)
static

Writes footer to the buffer.

◆ AddHeader()

void FGenericCrashContext::AddHeader ( FString &  Buffer)
static

Writes header information to the buffer.

◆ AddPlugin()

void FGenericCrashContext::AddPlugin ( const FString &  PluginDesc)
static

Adds a plugin descriptor string to the enabled plugins list in the crash context

◆ AddPortableThreadCallStack()

void FGenericCrashContext::AddPortableThreadCallStack ( uint32  ThreadId,
const TCHAR ThreadName,
const uint64 StackFrames,
int32  NumStackFrames 
)
virtual

Reimplemented in FMicrosoftPlatformCrashContext.

◆ AddPortableThreadCallStacks()

void FGenericCrashContext::AddPortableThreadCallStacks ( TConstArrayView< FThreadCallStack Threads)
virtual

Adds a portable callstack for a thread

Reimplemented in FMicrosoftPlatformCrashContext.

◆ AddSection()

void FGenericCrashContext::AddSection ( FString &  Buffer,
const TCHAR SectionName,
const FString &  SectionContent 
)
static

◆ AppendEscapedXMLString() [1/2]

void FGenericCrashContext::AppendEscapedXMLString ( FString &  OutBuffer,
FStringView  Text 
)
static

Escapes and appends specified text to XML string

◆ AppendEscapedXMLString() [2/2]

void FGenericCrashContext::AppendEscapedXMLString ( FStringBuilderBase OutBuffer,
FStringView  Text 
)
static

◆ AppendPortableCallstack()

void FGenericCrashContext::AppendPortableCallstack ( FString &  OutBuffer,
TConstArrayView< FCrashStackFrame StackFrames 
)
static

◆ BeginSection()

void FGenericCrashContext::BeginSection ( FString &  Buffer,
const TCHAR SectionName 
)
static

◆ CaptureModules()

void FGenericCrashContext::CaptureModules ( )
virtual

Store info about loaded modules

◆ CapturePortableCallStack() [1/2]

void FGenericCrashContext::CapturePortableCallStack ( int32  NumStackFramesToIgnore,
void Context 
)

◆ CapturePortableCallStack() [2/2]

void FGenericCrashContext::CapturePortableCallStack ( void ErrorProgramCounter,
void Context 
)

Generate raw call stack for crash report (image base + offset) for the calling thread

Parameters
ErrorProgramCounterThe program counter of where the occur occurred in the callstack being captured
ContextOptional thread context information

◆ CaptureThreadPortableCallStack()

void FGenericCrashContext::CaptureThreadPortableCallStack ( const uint64  ThreadId,
void Context 
)

Generate raw call stack for crash report (image base + offset) for a different thread

Parameters
InThreadIdThe thread id of the thread to capture the callstack for
ContextOptional thread context information

◆ CleanupPlatformSpecificFiles()

void FGenericCrashContext::CleanupPlatformSpecificFiles ( )
static

Cleanup platform specific files - called on startup, implemented per platform

Implement platform specific static cleanup function

◆ CleanupTempSessionContextFiles()

void FGenericCrashContext::CleanupTempSessionContextFiles ( const FTimespan ExpirationAge)
static

Clean up expired context files that were left-over on the user disks (because the consumer crashed and/or failed to delete it).

◆ CopyPlatformSpecificFiles()

void FGenericCrashContext::CopyPlatformSpecificFiles ( const TCHAR OutputDirectory,
void Context 
)
virtual

Allows platform implementations to copy files to report directory.

Reimplemented in FWindowsPlatformCrashContext.

◆ CopySharedCrashContext()

void FGenericCrashContext::CopySharedCrashContext ( FSharedCrashContext Dst)
static

Initializes a shared crash context from current state. Will not set all fields in Dst.

◆ CreateCrashReportDirectory()

bool FGenericCrashContext::CreateCrashReportDirectory ( const TCHAR CrashGUIDRoot,
int32  CrashIndex,
FString &  OutCrashDirectoryAbsolute 
)
static

Attempts to create the output report directory.

◆ DumpAdditionalContext()

void FGenericCrashContext::DumpAdditionalContext ( const TCHAR CrashFolderAbsolute)
static

Collects additional crash context providers. See FAdditionalCrashContextStack.

◆ DumpLog()

FString FGenericCrashContext::DumpLog ( const FString &  CrashFolderAbsolute)
static

Flushes the logs. In the case of in memory logs is used on this configuration, dumps them to file. Returns the name of the file

◆ EndSection()

void FGenericCrashContext::EndSection ( FString &  Buffer,
const TCHAR SectionName 
)
static

◆ GenerateNewCrashGuidBase()

FString FGenericCrashContext::GenerateNewCrashGuidBase ( )
staticprotected

Generate a new crash guid base string.

◆ GetBuffer()

const FString & FGenericCrashContext::GetBuffer ( ) const
inline
Returns
the buffer containing serialized data.

◆ GetCachedSessionContext()

const FSessionContext & FGenericCrashContext::GetCachedSessionContext ( )
static

Get the current cached session context

◆ GetCallstackProperty()

const TCHAR * FGenericCrashContext::GetCallstackProperty ( ) const
protectedvirtual

Allow platform implementations to provide a callstack property. Primarily used when non-native code triggers a crash.

Reimplemented in FAndroidCrashContext, and FApplePlatformCrashContext.

◆ GetCrashConfigFilePath()

const TCHAR * FGenericCrashContext::GetCrashConfigFilePath ( )
static

Helper to get the crash report client config filepath saved by this instance and copied to each crash report folder.

◆ GetCrashConfigFolder()

const TCHAR * FGenericCrashContext::GetCrashConfigFolder ( )
static

Helper to get the crash report client config folder used by GetCrashConfigFilePath().

◆ GetCrashGameName()

FString FGenericCrashContext::GetCrashGameName ( )
static

Get the Game Name of the crash

◆ GetCrashTypeString()

const TCHAR * FGenericCrashContext::GetCrashTypeString ( ECrashContextType  Type)
static

Helper to get the standard string for the crash type based on crash event bool values.

◆ GetDeploymentName()

const TCHAR * FGenericCrashContext::GetDeploymentName ( )
static

Get the current deployment name (ie. EpicApp)

◆ GetEngineData() [1/2]

const TMap< FString, FString > & FGenericCrashContext::GetEngineData ( )
static

Get the engine data dictionary

◆ GetEngineData() [2/2]

const FString * FGenericCrashContext::GetEngineData ( const FString &  Key)
staticprotected

Get arbitrary engine data from the crash context

◆ GetGameData() [1/2]

const TMap< FString, FString > & FGenericCrashContext::GetGameData ( )
static

Get the game data dictionary

◆ GetGameData() [2/2]

const FString * FGenericCrashContext::GetGameData ( const FString &  Key)
staticprotected

Get arbitrary game data from the crash context

◆ GetGameName()

FString FGenericCrashContext::GetGameName ( )
static

Gets the current standardized game name for use in a Crash Reporter report.

◆ GetModules()

void FGenericCrashContext::GetModules ( TArray< FStackWalkModuleInfo > &  OutModules) const
virtual

Gets info about loaded modules and stores it in the given array

◆ GetOutOfProcessCrashReporterExitCode()

TOptional< int32 > FGenericCrashContext::GetOutOfProcessCrashReporterExitCode ( )
static

Return the out-of-process crash reporter exit code if available. The exit code is available if crash reporter process died while the application it monitors was still running. Then engine periodically poll the health of the crash reporter process and try to read its exit code if it unexpectedly died.

Note
This function is useful to try diagnose why the crash reporter died (crashed/killed/asserted) and gather data for the analytics.

◆ GetOutOfProcessCrashReporterProcessId()

static uint32 FGenericCrashContext::GetOutOfProcessCrashReporterProcessId ( )
inlinestatic
Returns
a non-zero value if crash reporter process is used to monitor the session, capture the call stack and write the minidump, otherwise, this is done inside the crashing process.

◆ GetPlatformAllThreadContextsString()

virtual bool FGenericCrashContext::GetPlatformAllThreadContextsString ( FString &  OutStr) const
inlineprotectedvirtual

@OutStr - a stream of Thread XML elements containing info (e.g. callstack) specific to an active thread

Returns
- whether the operation was successful

Reimplemented in FMacCrashContext, and FMicrosoftPlatformCrashContext.

◆ GetPortableCallStack()

void FGenericCrashContext::GetPortableCallStack ( const uint64 StackFrames,
int32  NumStackFrames,
TArray< FCrashStackFrame > &  OutCallStack 
) const
virtual

Gets the portable callstack to a specified stack and puts it into OutCallStack

Reimplemented in FAndroidCrashContext, and FUnixCrashContext.

◆ GetTempSessionContextFilePath()

FString FGenericCrashContext::GetTempSessionContextFilePath ( uint64  ProcessID)
static

Get the file path to the temporary session context file that we create for the given process.

◆ GetType()

ECrashContextType FGenericCrashContext::GetType ( ) const
inline
Returns
the type of this crash

◆ GetUniqueCrashName()

void FGenericCrashContext::GetUniqueCrashName ( TCHAR GUIDBuffer,
int32  BufferSize 
) const
Returns
a globally unique crash name.

◆ Initialize()

void FGenericCrashContext::Initialize ( )
static

Initializes crash context related platform specific data that can be impossible to obtain after a crash.

◆ InitializeFromContext()

void FGenericCrashContext::InitializeFromContext ( const FSessionContext Context,
const TCHAR EnabledPlugins,
const TCHAR EngineData,
const TCHAR GameData,
const TCHAR FilePathData,
const FGPUBreadcrumbsSharedContext GPUBreadcrumbs 
)
static

Initialized crash context, using a crash context (e.g. shared from another process).

◆ IsFullCrashDump()

const bool FGenericCrashContext::IsFullCrashDump ( ) const
Returns
whether this crash is a full memory minidump

◆ IsInitalized()

static bool FGenericCrashContext::IsInitalized ( )
inlinestatic
Returns
true, if the generic crash context has been initialized.

◆ IsOutOfProcessCrashReporter()

static bool FGenericCrashContext::IsOutOfProcessCrashReporter ( )
inlinestatic
Returns
true if walking the crashed call stack and writing the minidump is being handled out-of-process.
Note
The reporting itself (showing the crash UI and sending the report is always done out of process)

◆ IsTypeContinuable()

static bool FGenericCrashContext::IsTypeContinuable ( ECrashContextType  Type)
inlinestatic
Returns
whether a crash context type is continable

◆ OnAdditionalCrashContextDelegate()

static FAdditionalCrashContextDelegate & FGenericCrashContext::OnAdditionalCrashContextDelegate ( )
inlinestatic

Delegate for additional crash context.

◆ OnEngineDataResetDelegate()

static FEngineDataResetDelegate & FGenericCrashContext::OnEngineDataResetDelegate ( )
inlinestatic

Accessor for engine data reset callback delegate

◆ OnEngineDataSetDelegate()

static FEngineDataSetDelegate & FGenericCrashContext::OnEngineDataSetDelegate ( )
inlinestatic

Accessor for engine data change callback delegate

◆ OnGameDataResetDelegate()

static FGameDataResetDelegate & FGenericCrashContext::OnGameDataResetDelegate ( )
inlinestatic

Accessor for game data reset callback delegate

◆ OnGameDataSetDelegate()

static FGameDataSetDelegate & FGenericCrashContext::OnGameDataSetDelegate ( )
inlinestatic

Accessor for game data change callback delegate

◆ OnThreadStuck()

void FGenericCrashContext::OnThreadStuck ( uint32  ThreadId)
static

Sets a flag that one of the threads is stuck. This is meant to be bound to the ThreadHeartBeat::OnThreadStuck delegate. Not all platforms register to save this flag.

◆ OnThreadUnstuck()

void FGenericCrashContext::OnThreadUnstuck ( uint32  ThreadId)
static

Clears the stuck flag. This is meant to be bound to the ThreadHeartBeat::OnThreadUnstuck delegate. Not all platforms register to save this flag.

◆ PurgeOldCrashConfig()

void FGenericCrashContext::PurgeOldCrashConfig ( )
static

Helper to clean out old files in the crash report client config folder.

◆ ResetEngineData()

void FGenericCrashContext::ResetEngineData ( )
static

Clears the engine data dictionary

◆ ResetGameData()

void FGenericCrashContext::ResetGameData ( )
static

Clears the game data dictionary

◆ SerializeAsXML()

void FGenericCrashContext::SerializeAsXML ( const TCHAR Filename) const
virtual

Serializes crash's informations to the specified filename. Should be overridden for platforms where using FFileHelper is not safe, all POSIX platforms.

◆ SerializeContentToBuffer()

void FGenericCrashContext::SerializeContentToBuffer ( ) const

Serializes all data to the buffer.

◆ SerializeSessionContext()

void FGenericCrashContext::SerializeSessionContext ( FString &  Buffer)
static

Serializes session context to the given buffer. NOTE: Assumes that the buffer already has a header and section open.

◆ SetAnticheatProvider()

void FGenericCrashContext::SetAnticheatProvider ( const FString &  AnticheatProvider)
static

Sets the Anticheat client provider.

◆ SetCrashedProcess()

void FGenericCrashContext::SetCrashedProcess ( const FProcHandle Process)
inline

Sets the process id to that has crashed. On supported platforms this will analyze the given process rather than current. Default is current process.

◆ SetCrashedThreadId()

void FGenericCrashContext::SetCrashedThreadId ( uint32  InId)
inline

Stores crashing thread id.

◆ SetCrashTrigger()

void FGenericCrashContext::SetCrashTrigger ( ECrashTrigger  Type)
static

Sets the type of crash triggered. Used to distinguish crashes caused for debugging purposes.

◆ SetDeploymentName()

void FGenericCrashContext::SetDeploymentName ( const FString &  EpicApp)
static

Set the current deployment name (ie. EpicApp)

◆ SetEngineData()

void FGenericCrashContext::SetEngineData ( const FString &  Key,
const FString &  Value 
)
static

Updates (or adds if not already present) arbitrary engine data to the crash context (will remove the key if passed an empty string)

◆ SetEngineExit()

void FGenericCrashContext::SetEngineExit ( bool  bIsRequestExit)
static

Notify the crash context exit has been requested.

◆ SetEpicAccountId()

void FGenericCrashContext::SetEpicAccountId ( const FString &  EpicAccountId)
static

Set or change the epic account id associated with the crash session. Will override the epic account id stored in the registry for reporting when present.

◆ SetGameData()

void FGenericCrashContext::SetGameData ( const FString &  Key,
const FString &  Value 
)
static

Updates (or adds if not already present) arbitrary game data to the crash context (will remove the key if passed an empty string)

◆ SetGPUBreadcrumbs()

void FGenericCrashContext::SetGPUBreadcrumbs ( FGPUBreadcrumbCrashData &&  Data)
static

Updates (or adds if not already present) GPU breadcrumb data.

◆ SetMemoryStats()

void FGenericCrashContext::SetMemoryStats ( const FPlatformMemoryStats MemoryStats)
static

We can't gather memory stats in crash handling function, so we gather them just before raising exception and use in crash reporting.

◆ SetNumMinidumpFramesToIgnore()

void FGenericCrashContext::SetNumMinidumpFramesToIgnore ( int32  InNumMinidumpFramesToIgnore)

Sets the number of stack frames to ignore when symbolicating from a minidump

◆ SetOutOfProcessCrashReporterExitCode()

void FGenericCrashContext::SetOutOfProcessCrashReporterExitCode ( int32  ExitCode)
static

Set the out of process crash reporter exit code if known. The out of process reporter is expected to run in background, waiting for a signal to handle a crashes/ensures/assert, but sometimes it crashes. If the engine detects that its associated out of process crash reporter died and if the child process exit code can be retrieved, it can be exposed through this function.

See also
GetOutOfProcessCrashReporterExitCode

◆ SetOutOfProcessCrashReporterPid()

static void FGenericCrashContext::SetOutOfProcessCrashReporterPid ( uint32  ProcessId)
inlinestatic

Set whether or not the out-of-process crash reporter is running. A non-zero process id means that crash artifacts like the call stack and then minidump are built in a separated background process. The reporting itself, i.e. packaging and sending the crash artifacts is always done out of process.

Note
CrashReportClient (CrashReportClientEditor for the Editor) can be configured to wait for crash, capture the crashed process callstack, write the minidump, collect all crash artifacts and send them (out-of-process reporting) or just collect and send them (in-process reporting because the crashing process creates all crash artifacts itself).

◆ SetPortableCallStack()

void FGenericCrashContext::SetPortableCallStack ( const uint64 StackFrames,
int32  NumStackFrames 
)
virtual

Sets the portable callstack to a specified stack

Reimplemented in FMicrosoftPlatformCrashContext.

◆ UnescapeXMLString()

FString FGenericCrashContext::UnescapeXMLString ( const FString &  Text)
static

Unescapes a specified XML string, naive implementation.

Member Data Documentation

◆ AttendedStatusTag

const TCHAR *const FGenericCrashContext::AttendedStatusTag = TEXT("CrashReporterMessage")
static

◆ BuildVersionTag

const TCHAR *const FGenericCrashContext::BuildVersionTag = TEXT("BuildVersion")
static

◆ CallStack

TArray<FCrashStackFrame> FGenericCrashContext::CallStack
protected

◆ CallStackTag

const TCHAR *const FGenericCrashContext::CallStackTag = TEXT("CallStack")
static

◆ ConfigSectionName

const TCHAR *const FGenericCrashContext::ConfigSectionName = TEXT("CrashReportClient")
static

◆ CrashConfigExtension

const TCHAR *const FGenericCrashContext::CrashConfigExtension = TEXT(".ini")
static

◆ CrashConfigFileNameA

const ANSICHAR *const FGenericCrashContext::CrashConfigFileNameA = "CrashReportClient.ini"
static

◆ CrashConfigFileNameW

const TCHAR *const FGenericCrashContext::CrashConfigFileNameW = TEXT("CrashReportClient.ini")
static

◆ CrashConfigPurgeDays

const TCHAR *const FGenericCrashContext::CrashConfigPurgeDays = TEXT("CrashConfigPurgeDays")
static

◆ CrashContextExtension

const TCHAR *const FGenericCrashContext::CrashContextExtension = TEXT(".runtime-xml")
static

◆ CrashContextRuntimeXMLNameA

const ANSICHAR *const FGenericCrashContext::CrashContextRuntimeXMLNameA = "CrashContext.runtime-xml"
static

◆ CrashContextRuntimeXMLNameW

const TCHAR *const FGenericCrashContext::CrashContextRuntimeXMLNameW = TEXT( "CrashContext.runtime-xml" )
static

◆ CrashedThreadId

uint32 FGenericCrashContext::CrashedThreadId
protected

◆ CrashGUIDLength

constexpr int32 FGenericCrashContext::CrashGUIDLength = 128
inlinestaticconstexpr

◆ CrashGUIDRootPrefix

const TCHAR *const FGenericCrashContext::CrashGUIDRootPrefix = TEXT("UECC-")
static

◆ CrashGuidTag

const TCHAR *const FGenericCrashContext::CrashGuidTag = TEXT("CrashGUID")
static

◆ CrashReporterMessageTag

const TCHAR *const FGenericCrashContext::CrashReporterMessageTag = TEXT("CrashReporterMessage")
static

◆ CrashReportOptionalAttachmentsDirName

const TCHAR *const FGenericCrashContext::CrashReportOptionalAttachmentsDirName = TEXT("OptionalAttachments")
static

◆ CrashTypeAbnormalShutdown

const TCHAR *const FGenericCrashContext::CrashTypeAbnormalShutdown = TEXT("AbnormalShutdown")
static

◆ CrashTypeAssert

const TCHAR *const FGenericCrashContext::CrashTypeAssert = TEXT("Assert")
static

◆ CrashTypeCrash

const TCHAR *const FGenericCrashContext::CrashTypeCrash = TEXT("Crash")
static

◆ CrashTypeEnsure

const TCHAR *const FGenericCrashContext::CrashTypeEnsure = TEXT("Ensure")
static

◆ CrashTypeGPU

const TCHAR *const FGenericCrashContext::CrashTypeGPU = TEXT("GPUCrash")
static

◆ CrashTypeHang

const TCHAR *const FGenericCrashContext::CrashTypeHang = TEXT("Hang")
static

◆ CrashTypeOutOfMemory

const TCHAR *const FGenericCrashContext::CrashTypeOutOfMemory = TEXT("OutOfMemory")
static

◆ CrashTypeStall

const TCHAR *const FGenericCrashContext::CrashTypeStall = TEXT("Stall")
static

◆ CrashTypeTag

const TCHAR *const FGenericCrashContext::CrashTypeTag = TEXT("CrashType")
static

◆ CrashTypeVerseRuntimeError

const TCHAR *const FGenericCrashContext::CrashTypeVerseRuntimeError = TEXT("VerseRuntimeError")
static

◆ CrashVersionTag

const TCHAR *const FGenericCrashContext::CrashVersionTag = TEXT("CrashVersion")
static

◆ DeploymentNameTag

const TCHAR *const FGenericCrashContext::DeploymentNameTag = TEXT( "DeploymentName" )
static

◆ EnabledPluginsTag

const TCHAR *const FGenericCrashContext::EnabledPluginsTag = TEXT("EnabledPlugins")
static

◆ EngineDataTag

const TCHAR *const FGenericCrashContext::EngineDataTag = TEXT( "EngineData" )
static

◆ EngineModeExDirty

const TCHAR *const FGenericCrashContext::EngineModeExDirty = TEXT("Dirty")
static

◆ EngineModeExUnknown

const TCHAR *const FGenericCrashContext::EngineModeExUnknown = TEXT("Unset")
static

◆ EngineModeExVanilla

const TCHAR *const FGenericCrashContext::EngineModeExVanilla = TEXT("Vanilla")
static

◆ ErrorMessage

const TCHAR* FGenericCrashContext::ErrorMessage
protected

◆ ErrorMessageTag

const TCHAR *const FGenericCrashContext::ErrorMessageTag = TEXT("ErrorMessage")
static

◆ ExecutionGuid

const FGuid FGenericCrashContext::ExecutionGuid = FGuid::NewGuid()
static

◆ ExecutionGuidTag

const TCHAR *const FGenericCrashContext::ExecutionGuidTag = TEXT("ExecutionGuid")
static

◆ GameDataTag

const TCHAR *const FGenericCrashContext::GameDataTag = TEXT( "GameData" )
static

◆ GameNameTag

const TCHAR *const FGenericCrashContext::GameNameTag = TEXT( "GameName" )
static

◆ IsAssertTag

const TCHAR *const FGenericCrashContext::IsAssertTag = TEXT("IsAssert")
static

◆ IsEnsureTag

const TCHAR *const FGenericCrashContext::IsEnsureTag = TEXT("IsEnsure")
static

◆ IsInternalBuildTag

const TCHAR *const FGenericCrashContext::IsInternalBuildTag = TEXT("IsInternalBuild")
static

◆ IsPerforceBuildTag

const TCHAR *const FGenericCrashContext::IsPerforceBuildTag = TEXT("IsPerforceBuild")
static

◆ IsRequestingExitTag

const TCHAR *const FGenericCrashContext::IsRequestingExitTag = TEXT("IsRequestingExit")
static

◆ IsSourceDistributionTag

const TCHAR *const FGenericCrashContext::IsSourceDistributionTag = TEXT("IsSourceDistribution")
static

◆ IsStallTag

const TCHAR *const FGenericCrashContext::IsStallTag = TEXT("IsStall")
static

◆ IsWithDebugInfoTag

const TCHAR *const FGenericCrashContext::IsWithDebugInfoTag = TEXT("IsWithDebugInfo")
static

◆ LogFilePathTag

const TCHAR *const FGenericCrashContext::LogFilePathTag = TEXT("LogFilePath")
static

◆ ModulesInfo

TArray<FStackWalkModuleInfo> FGenericCrashContext::ModulesInfo
protected

◆ NewLineTag

const TCHAR *const FGenericCrashContext::NewLineTag = TEXT( "&nl;" )
static

◆ NumMinidumpFramesToIgnore

int FGenericCrashContext::NumMinidumpFramesToIgnore
protected

◆ PlatformPropertiesTag

const TCHAR *const FGenericCrashContext::PlatformPropertiesTag = TEXT( "PlatformProperties" )
static

◆ PortableCallStackHashTag

const TCHAR *const FGenericCrashContext::PortableCallStackHashTag = TEXT("PCallStackHash")
static

◆ PortableCallStackTag

const TCHAR *const FGenericCrashContext::PortableCallStackTag = TEXT("PCallStack")
static

◆ ProcessHandle

FProcHandle FGenericCrashContext::ProcessHandle
protected

◆ ProcessIdTag

const TCHAR *const FGenericCrashContext::ProcessIdTag = TEXT("ProcessId")
static

◆ RequestDataTag

const TCHAR *const FGenericCrashContext::RequestDataTag = TEXT( "RequestData" )
static

◆ RuntimePropertiesTag

const TCHAR *const FGenericCrashContext::RuntimePropertiesTag = TEXT( "RuntimeProperties" )
static

◆ SecondsSinceStartTag

const TCHAR *const FGenericCrashContext::SecondsSinceStartTag = TEXT("SecondsSinceStart")
static

◆ ThreadCallStacks

TArray<FThreadStackFrames> FGenericCrashContext::ThreadCallStacks
protected

◆ Type

ECrashContextType FGenericCrashContext::Type
protected

◆ UEMinidumpName

const TCHAR *const FGenericCrashContext::UEMinidumpName = TEXT( "UEMinidump.dmp" )
static

The documentation for this struct was generated from the following files: