/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Debug.hpp Date: 2021-6-9 Author: Reece ***/ #pragma once #include #include "StackTrace.hpp" #include "EFailureCategory.hpp" namespace Aurora::Debug { using OSError_t = AuPair; /** Retrieves a print-friendly callstack of the last trap (either innocent exception or fatal mem access)
On Win32, this information is always available */ AUKN_SYM AuString GetLastErrorStack(); AUKN_SYM StackTrace GetLastStackTrace(); /** Retrieve information about the last exception. On Win32, this information is always available */ AUKN_SYM AuString GetLastException(); /** Retrieve the last system error (Example -> Win32, GetLastError()) */ AUKN_SYM OSError_t GetLastSystemMessage(); /** Prints the current error state of the thread including:
Current System Error,
Current Runtime Error,
Last Exception Call Stack,
Last major ring notification */ AUKN_SYM void PrintError(); AUKN_SYM void CheckErrors(); /** * @brief Specifies an EFailureCategory value for the current thread * @param category * @return */ AUKN_SYM void ErrorCategorySet(EFailureCategory category); /** * @brief Guarantees a refresh of ErrorCategoryGet's current value * @return */ AUKN_SYM void ErrorCategoryClear(); /** * @brief Returns the last EFailureCategory as specified by ErrorCategorySet or SysPushErrors * @return */ AUKN_SYM EFailureCategory ErrorCategoryGet(); AUKN_SYM StackTrace GetStackTrace(); /** Immediately terminates the process. May attempt some hardened telemetry debug ops */ AUKN_SYM AU_NORETURN void Panic(); /** Localize platform dependent abi mangled name */ AUKN_SYM AuResult DemangleName(const AuString &pName); AUKN_SYM void DebugBreak(); } #include "SysPanic.hpp" #include "SysAssertions.hpp" #include "SysErrors.hpp"