Api

Debug API

Public logging, log levels, crash handlers, and debug providers.

Include

#include <debug/DebugManager.hpp>

DebugManager

DebugManager is a singleton logger:

auto& debug = Public::Debug::DebugManager::getInstance();
debug.Initialize("game.log");
debug.EnableConsoleOutput(true);
debug.SetMinLogLevel(Public::Debug::ILogger::LogLevel::Verbose);
APIPurpose
Initialize(logDirectory, warnLeftovers, maxAgeInDays, purgeLeftovers)Set up log files and cleanup policy.
Log(level, message, useLogFile, recursive)Write a log entry.
EnableConsoleOutput(bool)Mirror logs to console.
SetMinLogLevel(level)Filter lower-priority logs.
UnhandledExceptionHandler(message)Write crash-adjacent exception information.

Log Levels

Public::Debug::ILogger::LogLevel::Verbose
Public::Debug::ILogger::LogLevel::Info
Public::Debug::ILogger::LogLevel::Assertive
Public::Debug::ILogger::LogLevel::Warning
Public::Debug::ILogger::LogLevel::Error
Public::Debug::ILogger::LogLevel::Critical

Macros

LOG_VERBOSE("Verbose details");
LOG_INFO("Game started");
LOG_ASSERT("Manual checkpoint");
LOG_WARNING("Recoverable issue");
LOG_ERROR("Operation failed");
LOG_CRITICAL("Fatal condition");

Macros are preferred over calling Log directly in most code.

Crash Dump Providers

<debug/CrashDumpProviders.hpp> exposes additive text providers. Engine/editor systems can register providers when they exist:

Public::Debug::CrashDumpProviders::RegisterSceneStateProvider([] {
    return std::string("active scene: outside");
});

Collect functions:

  • CollectEngineState()
  • CollectRendererState()
  • CollectResourceState()
  • CollectSceneState()
  • CollectAssetState()
  • CollectShaderState()
  • CollectInputState()
  • CollectAssertionState()

Platform Diagnostics

HeaderNotable APIs
<debug/PlatformCrashHandler.hpp>GetStacktrace, GetMemoryInfo, GetCrashContextReport, GetLoadedModules, GetThreadDump, GetProcessSnapshot, GetMemoryDiagnostics
<debug/Dx12CrashDiagnostics.hpp>GetDredReport
<debug/SystemInfoManager.hpp>GetOperatingSystemInfo, GetGpus, GetSystemRAM, GetCPUs

Use platform diagnostics for engine/editor crash reports. Game-level logging usually stays with DebugManager macros.