zworld-em/Plugins/sentry-unreal/Source/Sentry/Private/Utils/SentryLogUtils.cpp
2025-05-11 22:07:21 +08:00

28 lines
876 B
C++

// Copyright (c) 2024 Sentry. All Rights Reserved.
#include "SentryLogUtils.h"
#include "CoreGlobals.h"
#include "GenericPlatform/GenericPlatformStackWalk.h"
#include "HAL/UnrealMemory.h"
#include "Misc/OutputDeviceRedirector.h"
void SentryLogUtils::LogStackTrace(const TCHAR* Heading, const ELogVerbosity::Type LogVerbosity, int FramesToSkip)
{
#if !NO_LOGGING
const SIZE_T StackTraceSize = 65535;
ANSICHAR* StackTrace = (ANSICHAR*)FMemory::SystemMalloc(StackTraceSize);
{
StackTrace[0] = 0;
FGenericPlatformStackWalk::StackWalkAndDumpEx(StackTrace, StackTraceSize, FramesToSkip + 1, FGenericPlatformStackWalk::EStackWalkFlags::AccurateStackWalk);
}
FDebug::LogFormattedMessageWithCallstack(LogOutputDevice.GetCategoryName(), __FILE__, __LINE__, Heading, ANSI_TO_TCHAR(StackTrace), LogVerbosity);
GLog->Flush();
FMemory::SystemFree(StackTrace);
#endif
}