1 个不稳定版本

新版本 0.3.0 2024年8月16日

#1980解析器实现

Download history 104/week @ 2024-08-10

每月104次下载

MIT 许可证

58KB
1K SLoC

cdefmt

cdefmt ("c de format",缩写为 "c deferred formatting") 是一个针对资源受限设备(如微控制器)的高度高效的日志框架。

灵感来自 https://github.com/knurling-rs/defmt/

设置

c

  1. 将cdefmt修改添加到链接脚本中
    1. 更新/添加 .note.gnu.build-id 部分以定义必要的内存位置
      .note.gnu.build-id : {
          PROVIDE(__cdefmt_build_id = .);
          *(.note.gnu.build-id)
      }
      
    2. 将cdefmt元数据部分添加到链接脚本的末尾(或如果存在,则在 /DISCARD/ 之前)
      /* CDEFMT: log metadata section */
      .cdefmt 0 (INFO) : {
          KEEP(*(.cdefmt.init .cdefmt.init.*))
          . = . + 8;
          KEEP(*(.cdefmt .cdefmt.*))
      }
      
  2. 确保使用以下标志进行编译
    • -g - 需要调试信息以便解析日志参数。
    • -Wl,--build-id - 将构建ID链接到二进制文件以验证elf兼容性。
  3. 将头文件 cdefmt.h 添加到您的项目中。
  4. 在您希望使用它的任何地方包含该头文件。
  5. 在您的项目中实现 cdefmt_log
  6. 在主文件中的某个地方调用 CDEFMT_GENERATE_INIT()
  7. 在您的日志后端初始化后并可以安全调用 cdefmt_log 之后调用 cdefmt_init()
  8. 享受吧。

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

许可证

依赖项

~8.5MB
~161K SLoC