3个版本 (破坏性更新)
新增 0.3.0 | 2024年8月16日 |
---|---|
0.2.0 | 2024年6月15日 |
0.1.0 | 2024年4月13日 |
#1441 在 解析器实现
27KB
490 行
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
待定
使用方法
基本上,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
许可证
- 麻省理工学院许可证 (LICENSE 或 http://opensource.org/licenses/MIT)
依赖项
~8.5MB
~161K SLoC