1 个不稳定版本
新版本 0.3.0 | 2024年8月16日 |
---|
#1980 在 解析器实现
每月104次下载
58KB
1K SLoC
cdefmt
cdefmt
("c de format",缩写为 "c deferred formatting") 是一个针对资源受限设备(如微控制器)的高度高效的日志框架。
灵感来自 https://github.com/knurling-rs/defmt/
设置
c
- 将cdefmt修改添加到链接脚本中
- 更新/添加
.note.gnu.build-id
部分以定义必要的内存位置.note.gnu.build-id : { PROVIDE(__cdefmt_build_id = .); *(.note.gnu.build-id) }
- 将cdefmt元数据部分添加到链接脚本的末尾(或如果存在,则在
/DISCARD/
之前)/* CDEFMT: log metadata section */ .cdefmt 0 (INFO) : { KEEP(*(.cdefmt.init .cdefmt.init.*)) . = . + 8; KEEP(*(.cdefmt .cdefmt.*)) }
- 更新/添加
- 确保使用以下标志进行编译
-g
- 需要调试信息以便解析日志参数。-Wl,--build-id
- 将构建ID链接到二进制文件以验证elf兼容性。
- 将头文件
cdefmt.h
添加到您的项目中。 - 在您希望使用它的任何地方包含该头文件。
- 在您的项目中实现
cdefmt_log
。 - 在主文件中的某个地方调用
CDEFMT_GENERATE_INIT()
。 - 在您的日志后端初始化后并可以安全调用
cdefmt_log
之后调用cdefmt_init()
。 - 享受吧。
Rust
TBD
使用方法
基本上 cdefmt_log
应该将日志存储/写入日志接收器,然后应该将这些字节原样提供给解析器,并附带elf二进制文件。
请参阅
运行示例的最简单方法是使用cmake构建项目
cmake -S . -B build
cmake --build build/
然后运行stdout示例,并将其stdout管道传输到stdin示例
build/examples/stdout/example-stdout | build/stdin --elf build/examples/stdout/example-stdout
许可证
- MIT许可 (LICENSE 或 http://opensource.org/licenses/MIT)
依赖项
~8.5MB
~161K SLoC