Files
CHOMPStation2/code/modules/debugging/debugger.dm
2025-08-12 08:46:46 +02:00

55 lines
1.5 KiB
Plaintext

/// The debugger instance.
/// This is a GLOBAL_REAL because it initializes before the MC or GLOB.
/// Really only used to check to see if the debugger is enabled or not,
/// and to separate debugger-related code into its own thing.
GLOBAL_REAL(Debugger, /datum/debugger)
/datum/debugger
/// Is the debugger enabled?
VAR_FINAL/enabled = FALSE
/// The error text, if initializing the debugger errored.
VAR_FINAL/error
/// The path to the auxtools debug DLL, if it sets.
/// Defaults to the environmental variable AUXTOOLS_DEBUG_DLL.
VAR_FINAL/dll_path
/datum/debugger/New(dll_path)
if(!isnull(Debugger))
CRASH("Attempted to initialize /datum/debugger when global.Debugger is already set!")
Debugger = src
#ifndef OPENDREAM_REAL
src.dll_path = dll_path || world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
enable()
#endif
/datum/debugger/Destroy()
#ifndef OPENDREAM_REAL
if(enabled)
call_ext(dll_path, "auxtools_shutdown")()
#endif
return ..()
/// Attempt to enable the debugger.
/datum/debugger/proc/enable()
#ifndef OPENDREAM_REAL
if(enabled)
CRASH("Attempted to enable debugger while its already enabled, somehow.")
if(!dll_path)
return FALSE
var/result = call_ext(dll_path, "auxtools_init")()
if(result != "SUCCESS")
error = result
return FALSE
enable_debugging()
enabled = TRUE
return TRUE
#else
return FALSE
#endif
/datum/debugger/vv_edit_var(var_name, var_value)
return FALSE // no.
/datum/debugger/CanProcCall(procname)
return FALSE // double no.