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

#include <WindowsPlatformStackWalk.h>

+ Inheritance diagram for FWindowsPlatformStackWalk:

Static Public Member Functions

static CORE_API bool InitStackWalking ()
 
static CORE_API bool InitStackWalkingForProcess (const FProcHandle &Process)
 
static CORE_API TArray< FProgramCounterSymbolInfoGetStack (int32 IgnoreCount, int32 MaxDepth=100, void *Context=nullptr)
 
static CORE_API void EnumerateSymbolInfosForProgramCounter (uint64 ProgramCounter, bool bIncludeInlineFrames, TFunctionRef< void(FProgramCounterSymbolInfo &OutSymbolInfo)> Callback)
 
static CORE_API void ProgramCounterToSymbolInfo (uint64 ProgramCounter, FProgramCounterSymbolInfo &out_SymbolInfo)
 
static CORE_API void ProgramCounterToSymbolInfoEx (uint64 ProgramCounter, FProgramCounterSymbolInfoEx &out_SymbolInfo)
 
CORE_API static FORCENOINLINE uint32 CaptureStackBackTrace (uint64 *BackTrace, uint32 MaxDepth, void *Context=nullptr)
 
static CORE_API uint32 CaptureThreadStackBackTrace (uint64 ThreadId, uint64 *BackTrace, uint32 MaxDepth, void *Context=nullptr)
 
CORE_API static FORCENOINLINE void StackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, int32 IgnoreCount, void *Context=nullptr)
 
static CORE_API void StackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, void *ProgramCounter, void *Context=nullptr)
 
static CORE_API void ThreadStackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, int32 IgnoreCount, uint32 ThreadId)
 
static CORE_API int32 GetProcessModuleCount ()
 
static CORE_API int32 GetProcessModuleSignatures (FStackWalkModuleInfo *ModuleSignatures, const int32 ModuleSignaturesSize)
 
static CORE_API void RegisterOnModulesChanged ()
 
static CORE_API bool UploadLocalSymbols ()
 
static CORE_API FString GetDownstreamStorage ()
 
static CORE_API voidMakeThreadContextWrapper (void *Context, void *ThreadHandle)
 
static CORE_API void ReleaseThreadContextWrapper (void *ThreadContext)
 
static CORE_API bool GetFunctionDefinitionLocation (const FString &FunctionSymbolName, const FString &FunctionModuleName, FString &OutPathname, uint32 &OutLineNumber, uint32 &OutColumnNumber)
 
- Static Public Member Functions inherited from FGenericPlatformStackWalk
static CORE_API void Init ()
 
static bool InitStackWalking ()
 
static bool InitStackWalkingForProcess (const FProcHandle &Process)
 
static CORE_API bool ProgramCounterToHumanReadableString (int32 CurrentCallDepth, uint64 ProgramCounter, ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, FGenericCrashContext *Context=nullptr)
 
static CORE_API bool SymbolInfoToHumanReadableString (const FProgramCounterSymbolInfo &SymbolInfo, ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize)
 
static CORE_API bool SymbolInfoToHumanReadableStringEx (const FProgramCounterSymbolInfoEx &SymbolInfo, FString &out_HumanReadableString)
 
static void ProgramCounterToSymbolInfo (uint64 ProgramCounter, FProgramCounterSymbolInfo &out_SymbolInfo)
 
static void ProgramCounterToSymbolInfoEx (uint64 ProgramCounter, FProgramCounterSymbolInfoEx &out_SymbolInfo)
 
static CORE_API uint32 CaptureStackBackTrace (uint64 *BackTrace, uint32 MaxDepth, void *Context=nullptr)
 
static CORE_API uint32 CaptureThreadStackBackTrace (uint64 ThreadId, uint64 *BackTrace, uint32 MaxDepth, void *Context=nullptr)
 
CORE_API static FORCENOINLINE void StackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, int32 IgnoreCount, void *Context=nullptr)
 
static CORE_API void StackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, void *ProgramCounter, void *Context=nullptr)
 
static CORE_API TArray< FProgramCounterSymbolInfoGetStack (int32 IgnoreCount, int32 MaxDepth=100, void *Context=nullptr)
 
static void ThreadStackWalkAndDump (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, int32 IgnoreCount, uint32 ThreadId)
 
static CORE_API void StackWalkAndDumpEx (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, int32 IgnoreCount, uint32 Flags, void *Context=nullptr)
 
static CORE_API void StackWalkAndDumpEx (ANSICHAR *HumanReadableString, SIZE_T HumanReadableStringSize, void *ProgramCounter, uint32 Flags, void *Context=nullptr)
 
static FORCEINLINE int32 GetProcessModuleCount ()
 
static FORCEINLINE int32 GetProcessModuleSignatures (FStackWalkModuleInfo *ModuleSignatures, const int32 ModuleSignaturesSize)
 
static CORE_API TMap< FName, FString > GetSymbolMetaData ()
 
static CORE_API void CopyVirtualPathToLocal (char *Dest, int32 DestCapacity, const char *Source)
 

Static Protected Member Functions

static CORE_API void CaptureStackTraceByProcess (uint64 *OutBacktrace, uint32 MaxDepth, void *InContext, void *InThreadHandle, uint32 *OutDepth, bool bExternalProcess)
 
- Static Protected Member Functions inherited from FMicrosoftPlatformStackWalk
static CORE_API bool ExtractInfoFromModule (void *ProcessHandle, void *ModuleHandle, FStackWalkModuleInfo &OutInfo)
 
static CORE_API int32 CaptureStackTraceInternal (uint64 *OutBacktrace, uint32 MaxDepth, void *Context, void *ThreadHandle, uint32 *OutDepth)
 
- Static Protected Member Functions inherited from FGenericPlatformStackWalk
static CORE_API bool WantsDetailedCallstacksInNonMonolithicBuilds ()
 

Additional Inherited Members

- Public Types inherited from FGenericPlatformStackWalk
typedef FGenericPlatformStackWalk Base
 

Detailed Description

Windows implementation of the stack walking.

Member Function Documentation

◆ CaptureStackBackTrace()

UE_AUTORTFM_ALWAYS_OPEN uint32 FWindowsPlatformStackWalk::CaptureStackBackTrace ( uint64 BackTrace,
uint32  MaxDepth,
void Context = nullptr 
)
static

Capture a stack backtrace and optionally use the passed in exception pointers.

Parameters
BackTrace[out] Pointer to array to take backtrace
MaxDepthEntries in BackTrace array
ContextOptional thread context information (FWindowsThreadContextWrapper instance)

◆ CaptureStackTraceByProcess()

void FWindowsPlatformStackWalk::CaptureStackTraceByProcess ( uint64 OutBacktrace,
uint32  MaxDepth,
void InContext,
void InThreadHandle,
uint32 OutDepth,
bool  bExternalProcess 
)
staticprotected

◆ CaptureThreadStackBackTrace()

UE_AUTORTFM_ALWAYS_OPEN uint32 FWindowsPlatformStackWalk::CaptureThreadStackBackTrace ( uint64  ThreadId,
uint64 BackTrace,
uint32  MaxDepth,
void Context = nullptr 
)
static

◆ EnumerateSymbolInfosForProgramCounter()

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::EnumerateSymbolInfosForProgramCounter ( uint64  ProgramCounter,
bool  bIncludeInlineFrames,
TFunctionRef< void(FProgramCounterSymbolInfo &OutSymbolInfo)>  Callback 
)
static

◆ GetDownstreamStorage()

FString FWindowsPlatformStackWalk::GetDownstreamStorage ( )
static

Get downstream storage with downloaded from remote symbol storage files.

Find the downstream storage path.

◆ GetFunctionDefinitionLocation()

UE_AUTORTFM_ALWAYS_OPEN bool FWindowsPlatformStackWalk::GetFunctionDefinitionLocation ( const FString &  FunctionSymbolName,
const FString &  FunctionModuleName,
FString &  OutPathname,
uint32 OutLineNumber,
uint32 OutColumnNumber 
)
static

Returns the source file pathname, line and column where the specified function is defined.

The implementation extracts the information from the debug engine and the debug symbols and takes care of loading the debug symbols if the debug engine was configured to load symbols on demand. This function can be expensive if the debug symbols needs to be loaded. FMovieSceneEventParameters*

Parameters
FunctionSymbolNameThe function name to lookup.
FunctionModuleNameThe module name containing the function to lookup.
OutPathnameThe source file pathname.
OutLineNumberThe line at which the function is defined in the source file.
OutColumnNumberThe offset on the line at which the function is defined in the source file.
Returns
True if the the function location is found, false otherwise.

◆ GetProcessModuleCount()

int32 FWindowsPlatformStackWalk::GetProcessModuleCount ( )
static

◆ GetProcessModuleSignatures()

UE_AUTORTFM_ALWAYS_OPEN int32 FWindowsPlatformStackWalk::GetProcessModuleSignatures ( FStackWalkModuleInfo ModuleSignatures,
const int32  ModuleSignaturesSize 
)
static

◆ GetStack()

UE_AUTORTFM_ALWAYS_OPEN TArray< FProgramCounterSymbolInfo > FWindowsPlatformStackWalk::GetStack ( int32  IgnoreCount,
int32  MaxDepth = 100,
void Context = nullptr 
)
static

◆ InitStackWalking()

bool FWindowsPlatformStackWalk::InitStackWalking ( )
static

◆ InitStackWalkingForProcess()

bool FWindowsPlatformStackWalk::InitStackWalkingForProcess ( const FProcHandle Process)
static

◆ MakeThreadContextWrapper()

void * FWindowsPlatformStackWalk::MakeThreadContextWrapper ( void Context,
void ThreadHandle 
)
static

◆ ProgramCounterToSymbolInfo()

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::ProgramCounterToSymbolInfo ( uint64  ProgramCounter,
FProgramCounterSymbolInfo out_SymbolInfo 
)
static

◆ ProgramCounterToSymbolInfoEx()

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::ProgramCounterToSymbolInfoEx ( uint64  ProgramCounter,
FProgramCounterSymbolInfoEx out_SymbolInfo 
)
static

◆ RegisterOnModulesChanged()

void FWindowsPlatformStackWalk::RegisterOnModulesChanged ( )
static

◆ ReleaseThreadContextWrapper()

void FWindowsPlatformStackWalk::ReleaseThreadContextWrapper ( void ThreadContext)
static

◆ StackWalkAndDump() [1/2]

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::StackWalkAndDump ( ANSICHAR HumanReadableString,
SIZE_T  HumanReadableStringSize,
int32  IgnoreCount,
void Context = nullptr 
)
static

◆ StackWalkAndDump() [2/2]

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::StackWalkAndDump ( ANSICHAR HumanReadableString,
SIZE_T  HumanReadableStringSize,
void ProgramCounter,
void Context = nullptr 
)
static

◆ ThreadStackWalkAndDump()

UE_AUTORTFM_ALWAYS_OPEN void FWindowsPlatformStackWalk::ThreadStackWalkAndDump ( ANSICHAR HumanReadableString,
SIZE_T  HumanReadableStringSize,
int32  IgnoreCount,
uint32  ThreadId 
)
static

◆ UploadLocalSymbols()

bool FWindowsPlatformStackWalk::UploadLocalSymbols ( )
static

Upload localy built symbols to network symbol storage.

Use case: Game designers use game from source (without prebuild game .dll-files). In this case all game .dll-files are compiled locally. For post-mortem debug programmers need .dll and .pdb files from designers.

Upload locally built symbols to network symbol storage.

Use case: Game designers use game from source (without prebuild game .dll-files). In this case all game .dll-files are compiled locally. For post-mortem debug programmers need .dll and .pdb files from designers.


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