OpenTTD Source
20241120-master-g6d3adc6169
|
Handling of printing debug messages. More...
#include "stdafx.h"
#include "console_func.h"
#include "debug.h"
#include "string_func.h"
#include "fileio_func.h"
#include "settings_type.h"
#include <mutex>
#include "3rdparty/fmt/chrono.h"
#include "network/network_admin.h"
#include "safeguards.h"
Go to the source code of this file.
Data Structures | |
struct | QueuedDebugItem |
Element in the queue of debug messages that have to be passed to either NetworkAdminConsole or IConsolePrint. More... | |
struct | DebugLevel |
Macros | |
#define | DEBUG_LEVEL(x) { #x, &_debug_##x##_level } |
Functions | |
void | DumpDebugFacilityNames (std::back_insert_iterator< std::string > &output_iterator) |
Dump the available debug facility names in the help text. More... | |
void | DebugPrint (const char *category, int level, const std::string &message) |
Internal function for outputting the debug line. More... | |
void | SetDebugString (const char *s, void(*error_func)(const std::string &)) |
Set debugging levels by parsing the text in s. More... | |
std::string | GetDebugString () |
Print out the current debug-level. More... | |
std::string | GetLogPrefix (bool force) |
Get the prefix for logs. More... | |
void | DebugSendRemoteMessages () |
Send the queued Debug messages to either NetworkAdminConsole or IConsolePrint from the GameLoop thread to prevent concurrent accesses to both the NetworkAdmin's packet queue as well as IConsolePrint's buffers. More... | |
void | DebugReconsiderSendRemoteMessages () |
Reconsider whether we need to send debug messages to either NetworkAdminConsole or IConsolePrint. More... | |
Variables | |
std::atomic< bool > | _debug_remote_console |
Whether we need to send data to either NetworkAdminConsole or IConsolePrint. | |
std::mutex | _debug_remote_console_mutex |
Mutex to guard the queue of debug messages for either NetworkAdminConsole or IConsolePrint. | |
std::vector< QueuedDebugItem > | _debug_remote_console_queue |
Queue for debug messages to be passed to NetworkAdminConsole or IConsolePrint. | |
std::vector< QueuedDebugItem > | _debug_remote_console_queue_spare |
Spare queue to swap with _debug_remote_console_queue. | |
int | _debug_driver_level |
int | _debug_grf_level |
int | _debug_map_level |
int | _debug_misc_level |
int | _debug_net_level |
int | _debug_sprite_level |
int | _debug_oldloader_level |
int | _debug_yapf_level |
int | _debug_fontcache_level |
int | _debug_script_level |
int | _debug_sl_level |
int | _debug_gamelog_level |
int | _debug_desync_level |
int | _debug_console_level |
static const DebugLevel | _debug_levels [] |
Handling of printing debug messages.
Definition in file debug.cpp.
void DebugPrint | ( | const char * | category, |
int | level, | ||
const std::string & | message | ||
) |
Internal function for outputting the debug line.
level | Debug category. |
message | The message to output. |
Definition at line 109 of file debug.cpp.
References _debug_remote_console, _debug_remote_console_mutex, _debug_remote_console_queue, AUTOSAVE_DIR, FioFOpenFile(), GetLogPrefix(), and lock.
void DebugReconsiderSendRemoteMessages | ( | ) |
Reconsider whether we need to send debug messages to either NetworkAdminConsole or IConsolePrint.
The former is when they have enabled console handling whereas the latter depends on the gui.developer setting's value.
This is to be called from the GameLoop thread.
Definition at line 264 of file debug.cpp.
References _debug_remote_console, _settings_client, ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CONSOLE, GUISettings::developer, ClientSettings::gui, and ServerNetworkAdminSocketHandler::IterateActive().
Referenced by ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler().
void DebugSendRemoteMessages | ( | ) |
Send the queued Debug messages to either NetworkAdminConsole or IConsolePrint from the GameLoop thread to prevent concurrent accesses to both the NetworkAdmin's packet queue as well as IConsolePrint's buffers.
This is to be called from the GameLoop thread.
Definition at line 240 of file debug.cpp.
References _debug_remote_console, _debug_remote_console_mutex, _debug_remote_console_queue, _debug_remote_console_queue_spare, _settings_client, CC_DEBUG, GUISettings::developer, ClientSettings::gui, IConsolePrint(), lock, and NetworkAdminConsole().
void DumpDebugFacilityNames | ( | std::back_insert_iterator< std::string > & | output_iterator | ) |
std::string GetDebugString | ( | ) |
std::string GetLogPrefix | ( | bool | force | ) |
Get the prefix for logs.
If show_date_in_logs or force
is enabled it returns the date, otherwise it returns an empty string.
Definition at line 224 of file debug.cpp.
References _settings_client, ClientSettings::gui, and GUISettings::show_date_in_logs.
Referenced by DebugPrint(), and IConsolePrint().
void SetDebugString | ( | const char * | s, |
void(*)(const std::string &) | error_func | ||
) |
Set debugging levels by parsing the text in s.
For setting individual levels a string like "net=3,grf=6"
should be used. If the string starts with a number, the number is used as global debugging level.
s | Text describing the wanted debugging levels. |
error_func | The function to call if a parse error occurs. |
|
static |