使用软件,日志可以提供比较多的运行信息,研究日志也是一种学习。
Godot有两种运行模式:带控制台与不带控制台。带控制台的情况下,运行时会打开一个DOS窗口,具体的日志信息就显示在DOS窗口中。但不带控制台,就我目前的了解,这些日志就不知道在哪里显示了。
DrGraph前缀输出
基于单步调试,发现各种日志输出将调用CompositeLogger的各个loggers的logv、log_error函数,而在windows下运行,会有WindowsTerminalLogger实例对象,最终会调用WindowsTerminalLogger::logv/log_error函数。为了看看是否有效果,我在WindowsTerminalLogger::logv中输出的地方,加上DrGraph前缀输出。
void WindowsTerminalLogger::logv(const char *p_format, va_list p_list, bool p_err) {
if (!should_log(p_err)) {
return;
}
const unsigned int BUFFER_SIZE = 16384;
char buf[BUFFER_SIZE + 1]; // +1 for the terminating character
int len = vsnprintf(buf, BUFFER_SIZE, p_format, p_list);
if (len <= 0) {
return;
}
if ((unsigned int)len >= BUFFER_SIZE) {
len = BUFFER_SIZE; // Output is too big, will be truncated
}
buf[len] = 0;
int wlen = MultiByteToWideChar(CP_UTF8, 0, buf, len, nullptr, 0);
if (wlen < 0) {
return;
}
wchar_t *wbuf = (wchar_t *)memalloc((

文章讲述了如何在Godot引擎中定制日志输出,特别是在无控制台模式下。通过修改WindowsTerminalLogger的logv和log_error函数,添加DrGraph前缀以便追踪调试。同时,为了在非控制台模式下记录日志,文章实现了使用ofstream创建日志文件的功能,生成名为DrGraph_debug.log的文件来保存运行信息。此外,还介绍了DEBUG_SOURCE_POS宏定义,用于打印源代码位置信息。
最低0.47元/天 解锁文章
1306

被折叠的 条评论
为什么被折叠?



