Files
UnrealEngine/Engine/Source/Programs/ChaosVisualDebugger/Private/Windows/ChaosVisualDebuggerWindows.cpp
2025-05-18 13:04:45 +08:00

60 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ChaosVisualDebuggerMain.h"
#include "HAL/ExceptionHandling.h"
#include "Windows/WindowsHWrapper.h"
#include "LaunchEngineLoop.h"
#include "Misc/CommandLine.h"
#include "Misc/OutputDeviceError.h"
/**
* The main application entry point for the Visual debugger on Windows platforms.
*
* @param hInInstance Handle to the current instance of the application.
* @param hPrevInstance Handle to the previous instance of the application (always NULL).
* @param lpCmdLine Command line for the application.
* @param nShowCmd Specifies how the window is to be shown.
* @return Application's exit value.
*/
int32 WINAPI WinMain(_In_ HINSTANCE hInInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
hInstance = hInInstance;
const WIDECHAR* CmdLine = ::GetCommandLineW();
CmdLine = FCommandLine::RemoveExeName(CmdLine);
int32 ErrorLevel = 0;
#if UE_BUILD_DEBUG
if (!GAlwaysReportCrash)
#else
if (FPlatformMisc::IsDebuggerPresent() && !GAlwaysReportCrash)
#endif
{
ErrorLevel = RunChaosVisualDebugger(CmdLine);
}
else
{
#if !PLATFORM_SEH_EXCEPTIONS_DISABLED
__try
#endif
{
GIsGuarded = true;
ErrorLevel = RunChaosVisualDebugger(CmdLine);
GIsGuarded = false;
}
#if !PLATFORM_SEH_EXCEPTIONS_DISABLED
__except (ReportCrash(GetExceptionInformation()))
{
ErrorLevel = 1;
GError->HandleError();
FPlatformMisc::RequestExit(true);
}
#endif
}
FEngineLoop::AppExit();
return ErrorLevel;
}