diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog.md b/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog.md index fa2de9e006f96f53cf9dd54776b30abf8482d879..28ebf5c3ab5794a3a4cb9287bd80ff1532e290a8 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog.md @@ -259,8 +259,9 @@ void Timer2_Handler(void) 这里说明下中断日志在 ulog 处于同步模式与异步模式下的不同策略: --**同步模式下**:如果线程此时正在输出日志时来了中断,此时如果中断里也有日志要输出,会直接输出到控制台上,不支持输出到其他后端; --**异步模式下**:如果发生上面的情况,中断里的日志会先放入缓冲区中,最终和线程日志一起交给日志输出线程来处理。 +**同步模式下**:如果线程此时正在输出日志时来了中断,此时如果中断里也有日志要输出,会直接输出到控制台上,不支持输出到其他后端; + +**异步模式下**:如果发生上面的情况,中断里的日志会先放入缓冲区中,最终和线程日志一起交给日志输出线程来处理。 ### 设置日志格式 @@ -767,32 +768,32 @@ ulog 提供了多种维度的日志开关、过滤的功能,完全能够做到 ## 常见问题 -### Q: 日志代码已执行,但是无输出。 +**Q:** 日志代码已执行,但是无输出。 - **A:** 参考日志级别小节,了解日志级别分类,并检查日志过滤参数。还有种可能是不小心将控制台后端给关闭了,重新开启 `Enable console backend` 即可。 +**A:** 参考日志级别小节,了解日志级别分类,并检查日志过滤参数。还有种可能是不小心将控制台后端给关闭了,重新开启 `Enable console backend` 即可。 -### Q: 开启 ulog 后,系统运行崩溃,例如:线程堆栈溢出。 +**Q:** 开启 ulog 后,系统运行崩溃,例如:线程堆栈溢出。 - **A:** ulog 比起以前用的 rtdbg 或者 `rt_kprintf` 打印输出函数会多占一部分线程堆栈空间,如果是开启了浮点数打印支持,由于其内部使用了 libc 里资源占用加大的 `vsnprintf`,所以堆栈建议多预留 250 字节。如果开启了时间戳功能,堆栈建议多预留 100 字节。 +**A:** ulog 比起以前用的 rtdbg 或者 `rt_kprintf` 打印输出函数会多占一部分线程堆栈空间,如果是开启了浮点数打印支持,由于其内部使用了 libc 里资源占用加大的 `vsnprintf`,所以堆栈建议多预留 250 字节。如果开启了时间戳功能,堆栈建议多预留 100 字节。 -### Q: 日志内容的末尾缺失。 +**Q:** 日志内容的末尾缺失。 - **A:** 这是由于日志内容超出设定的日志的最大宽度。检查 `The log's max width` 选项,并增大其至合适的大小。 +**A:** 这是由于日志内容超出设定的日志的最大宽度。检查 `The log's max width` 选项,并增大其至合适的大小。 -### Q: 开启时间戳以后,为什么看不到毫秒级时间。 +**Q:** 开启时间戳以后,为什么看不到毫秒级时间。 - **A:** 这是因为 ulog 目前只支持在开启软件模拟 RTC 状态下,显示毫秒级时间戳。如需显示,只要开启 RT-Thread 软件模拟 RTC 功能即可。 +**A:** 这是因为 ulog 目前只支持在开启软件模拟 RTC 状态下,显示毫秒级时间戳。如需显示,只要开启 RT-Thread 软件模拟 RTC 功能即可。 -### Q: 每次 include ulog 头文件前,都要定义 LOG_TAG 及 LOG_LVL ,可否简化。 +**Q:** 每次 include ulog 头文件前,都要定义 LOG_TAG 及 LOG_LVL ,可否简化。 **A:** `LOG_TAG` 如果不定义,默认会使用 `NO_TAG` 标签,这样输出的日志会容易产生误解,所以标签的宏不建议省略。 `LOG_LVL` 如果不定义,默认会使用调试级别,如果该模块处于开发阶段这个过程可以省略,但是模块代码如果已经稳定,建议定义该宏,并修改级别为信息级别。 -### Q: 运行出现警告提示:Warning: There is no enough buffer for saving async log, please increase the ULOG_ASYNC_OUTPUT_BUF_SIZE option。 +**Q:** 运行出现警告提示:Warning: There is no enough buffer for saving async log, please increase the ULOG_ASYNC_OUTPUT_BUF_SIZE option。 **A:** 当遇到该提示时,说明了在异步模式下的缓冲区出现了溢出的情况,这会导致一部分日志丢失,增大 ULOG_ASYNC_OUTPUT_BUF_SIZE 选项可以解决该问题。 -### Q: 编译时提示:The idle thread stack size must more than 384 when using async output by idle (ULOG_ASYNC_OUTPUT_BY_IDLE)。 +**Q:** 编译时提示:The idle thread stack size must more than 384 when using async output by idle (ULOG_ASYNC_OUTPUT_BY_IDLE)。 **A:** 在使用 idle 线程作为输出线程时,idle 线程的堆栈大小需要提高,这也取决于具体的后端设备,例如:控制台后端时,idle 线程至少得 384 字节。