Refactor debugger and byond-tracy init (#90288)

## About The Pull Request

This refactors code related to debugger and byond-tracy
`/datum/debugger` and `/datum/tracy` - which live in the `GLOBAL_REAL`
vars `Debugger` and `Tracy` respectively.

This allows code related to those two to be grouped together in their
own files, rather than mashed into `world.dm` with a bunch of other shit
- while it still initializes during the same stages of init.

In addition, this also ports
https://github.com/BeeStation/BeeStation-Hornet/pull/8947, which prints
runtime errors to chat when the debugger is enabled.

<details>
<summary><h3>Proof of Testing</h3></summary>

![2025-03-27 (1743094986) ~
Code](https://github.com/user-attachments/assets/2678542f-8338-4ca8-9435-e0376da9e80a)
![2025-03-27 (1743095425) ~
Code](https://github.com/user-attachments/assets/35a1c454-c176-4fb9-987b-82eb92f0fd31)
![2025-03-27 (1743095936) ~
dreamseeker](https://github.com/user-attachments/assets/49f607dc-c684-4fd9-8271-a287f2341c52)
![2025-03-27 (1743096001) ~
Code](https://github.com/user-attachments/assets/8cca692c-6253-48e8-9994-beff39211078)
![2025-03-27 (1743096351) ~
dreamseeker](https://github.com/user-attachments/assets/43a993dd-3884-4709-94fc-d072ff97a337)

</details>

## Why It's Good For The Game

Reduces some `GLOB` pollution, and groups a bunch of related code into
dedicated files and datums.
It's simply cleaner.

Printing runtime errors to chat is also very useful, as it allows you to
see when shit is fuck, if you don't want a breakpoint pause for each
error.

## Changelog
🆑
refactor: Refactored some code related to initialization.
code: Runtime errors will now print to the chat while debugging.
/🆑
This commit is contained in:
Lucy
2025-04-02 17:38:49 -04:00
committed by GitHub
parent f7d44e38ae
commit d653870a91
8 changed files with 160 additions and 87 deletions
+11 -13
View File
@@ -881,29 +881,27 @@ ADMIN_VERB(check_missing_sprites, R_DEBUG, "Debug Worn Item Sprites", "We're can
if(!icon_exists(actual_file_name, sprite.icon_state))
to_chat(user, span_warning("ERROR sprites for [sprite.type]. Suit Storage slot."), confidential = TRUE)
#ifndef OPENDREAM
#ifndef OPENDREAM_REAL
ADMIN_VERB(start_tracy, R_DEBUG, "Run Tracy Now", "Start running the byond-tracy profiler immediately", ADMIN_CATEGORY_DEBUG)
if(GLOB.tracy_initialized)
if(Tracy.enabled)
to_chat(user, span_warning("byond-tracy is already running!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
return
else if(GLOB.tracy_init_error)
to_chat(user, span_danger("byond-tracy failed to initialize during an earlier attempt: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
else if(Tracy.error)
to_chat(user, span_danger("byond-tracy failed to initialize during an earlier attempt: [Tracy.error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
return
message_admins(span_adminnotice("[key_name_admin(user)] is trying to start the byond-tracy profiler."))
log_admin("[key_name(user)] is trying to start the byond-tracy profiler.")
GLOB.tracy_initialized = FALSE
GLOB.tracy_init_reason = "[user.ckey]"
world.init_byond_tracy()
if(GLOB.tracy_init_error)
to_chat(user, span_danger("byond-tracy failed to initialize: [GLOB.tracy_init_error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
message_admins(span_adminnotice("[key_name_admin(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])"))
log_admin("[key_name(user)] tried to start the byond-tracy profiler, but it failed to initialize ([GLOB.tracy_init_error])")
if(!Tracy.enable("[user.ckey]"))
var/error = Tracy.error || "N/A"
to_chat(user, span_danger("byond-tracy failed to initialize: [error]"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
message_admins(span_adminnotice("[key_name_admin(user)] tried to start the byond-tracy profiler, but it failed to initialize ([error])"))
log_admin("[key_name(user)] tried to start the byond-tracy profiler, but it failed to initialize ([error])")
return
to_chat(user, span_notice("byond-tracy successfully started!"), avoid_highlighting = TRUE, type = MESSAGE_TYPE_DEBUG, confidential = TRUE)
message_admins(span_adminnotice("[key_name_admin(user)] started the byond-tracy profiler."))
log_admin("[key_name(user)] started the byond-tracy profiler.")
if(GLOB.tracy_log)
rustg_file_write("[GLOB.tracy_log]", "[GLOB.log_directory]/tracy.loc")
if(Tracy.trace_path)
rustg_file_write("[Tracy.trace_path]", "[GLOB.log_directory]/tracy.loc")
ADMIN_VERB_CUSTOM_EXIST_CHECK(start_tracy)
return CONFIG_GET(flag/allow_tracy_start) && fexists(TRACY_DLL_PATH)