NanoLog起步笔记-7-log解压过程初探

nonolog起步笔记-6-log解压过程初探

  • 再看解压过程
  • 建立调试工程
    • 修改makefile
    • 添加新的launch项
  • 注:重新学习nanolog的README.md
    • Post-Execution Log Decompressor

下面我们尝试了解,解压的过程,是如何得到文件头部的meta信息的。

再看解压过程

./decompressor decompress /tmp/logFile
在这里插入图片描述如上图,发现,除了前两条有内容,其它的,其实是空的。
这里我们得到第一个猜想是,原始的binary log中,没有有效的消息总条数。所以,解析的程序,
将所有的可能的条目都解了一遍。这是因为,实际的应用中,因为每client(用户线程),实际一直在已经写满的circlebuffer中工作,不会有空白的。

也没有序号,因为时间戳,作为唯一的时间标识。

今天先这样,明天再继续。建一个新的工程之后,详细了解解压的过程。
目前,还没有找到meta是如何存入到最终的log中。只看到每record如何记录注册到meta中的logregistID

建立调试工程

修改makefile

可以有许多选择,这里我们还是基于 sample下的GNUmakefile,来进行。
./sample/GNUmakefile
因为我们现在的focus在解压,所以,我们不希望每次clean将上将做好的log文件删除。
所以,

clean:@rm -f *.o sampleApplication /tmp/logFile compressedLog

改为

clean:@rm -f *.o sampleApplication compressedLog

意外的收获,发现其中还有一个clean-all,这是很好,能解决昨天说的,有时无法下断的问题。
因为每次编译都是从runtime目录拷过来libNanoLog.a,如果本目录存在这个文件,将不会重编libNanoLog.a。

# Cleans up the NanoLog files as well
clean-all: clean@rm -f libNanoLog.a decompressor$(MAKE) clean-all -C $(NANOLOG_RUNTIME_DIR)

所以,可以将昨天的贴文中的tasks.json内容改为:
“make clean-all”,

	"tasks": [{"type": "shell","label": "make clean-all","command": "make","args": ["-f","GNUmakefile","clean"],"options": {"cwd": "${workspaceFolder}/sample"},"problemMatcher": ["$gcc"],"detail": "cleaning: make clean"},

添加新的launch项

.vscode/launch.json{"name": "C++ Launch decompressor","type": "cppdbg","request": "launch","program": "${workspaceFolder}/sample/decompressor","args": ["/tmp/logFile"],"environment": [{ "name": "config", "value": "Debug" }],"cwd": "${workspaceFolder}/sample","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}

这样做好分析,解压过程的准备。

注:重新学习nanolog的README.md

https://github.com/PlatformLab/NanoLog

在这里插入图片描述## Sample Applications

cd sample# Modify the application
nano main.ccmake clean-all
make
./sampleApplication
./decompressor decompress /tmp/logFile

Post-Execution Log Decompressor

The execution of the user application should generate a compressed, binary log file (default locations: ./compressedLog or /tmp/logFile). To make the log file human-readable, simply invoke the decompressor application with the log file.

./decompressor decompress ./compressedLog

After building the NanoLog library, the decompressor executable can be found in either the ./runtime directory (for C++17 NanoLog) or the user app directory (for Preprocessor NanoLog).

再向后是单元测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/487969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1.装饰器模式1.1概念1.2作用1.3应用场景1.4特点1.5类与对象关系1.6实现 2责任链模式2.1概念2.2作用2.3应用场景2.4特点2.5类与对象关系2.6实现 3.对比总结 前言…

llama-factory实战: 基于qwen2.5-7b 手把手实战 自定义数据集清洗 微调

基于qwen2.5 手把手实战 自定义数据集 微调(llama-factory) 准备工作1.数据集准备(例:民法典.txt)2.服务器准备(阿里云 DSW 白嫖)3.环境配置pip 升级模型下载微调助手 4.数据集处理脚本文件4.1文本分割(ber…

day08 接口测试(4)知识点完结!!

【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、postman读取外部数据文件(参数化) 1.1 数据文件简介 1.2 导入外部数据文件 1.2.1 csv文件 1.2.2 导入 json文件 1.3 读取数据文件数据 1.4 案例 1.5 生成测试报告 2、小…

基于Springboot的实验室管理系统【附源码】

基于Springboot的实验室管理系统 效果如下: 系统登录页面 实验室信息页面 维修记录页面 轮播图管理页面 公告信息管理页面 知识库页面 实验课程页面 实验室预约页面 研究背景 在科研、教育等领域,实验室是进行实验教学和科学研究的重要场所。随着实验…

selenium学习:等待方式

隐式等待 1.针对查找元素设置最大的超时时间 2.可以全局性的设置 3.不满足时,提示no such element driver.implicitly_wait(5) #对查找元素最大的超时时间,如果超过最大等待时间后,没有找到元素,则会报错:no such #e…

计算生成报价单小程序系统开发方案

计算生成报价单小程序报价系统,是根据商品品牌、类型、型号、规格、芯数、特性、颜色、分类进行选择不同的参数进行生成报价单,要求报价单支持生成图片、pdf、excel表格。 计算生成报价单小程序系统的主要功能模块有: 1、在线生成报价单&…

constexpr、const和 #define 的比较

constexpr、const 和 #define 的比较 一、定义常量 constexpr 定义:constexpr用于定义在编译期可求值的常量表达式。示例:constexpr int x 5;这里,x的值在编译期就确定为5。 const 定义:const表示变量在运行期间不能被修改&…

Spring Boot 整合 Druid 并开启监控

文章目录 1. 引言2. 添加依赖3. 配置数据源4. 开启监控功能5. 自定义 Druid 配置(可选)6. 访问监控页面7. 注意事项8. 总结 Druid 是一个由阿里巴巴开源的高性能数据库连接池,它不仅提供了高效的连接管理功能,还自带了强大的监控和…

Abaqus断层扫描三维重建插件CT2Model 3D V1.1版本更新

更新说明 Abaqus AbyssFish CT2Model3D V1.1版本更新新增对TIF、TIFF图像文件格式的支持。本插件用户可免费获取升级服务。 插件介绍 插件说明: Abaqus基于CT断层扫描的三维重建插件CT2Model 3D 应用案例: ABAQUS基于CT断层扫描的细观混凝土三维重建…

word poi-tl 表格功能增强,实现表格功能垂直合并

目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加(插件实现)MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中,word文档需要垂直合并表格&…

【OpenCV】平滑图像

二维卷积(图像滤波) 与一维信号一样,图像也可以通过各种低通滤波器(LPF)、高通滤波器(HPF)等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…

Vulhub:Log4j[漏洞复现]

CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…

Flume基础概念

目录 作用组件构成ClientFlowAgentSourceSinkEvent 和Log4j的区别与定位事务传出流程输入到sourcesource端输入Channel 接收输入到SinkSink输出 作用 Flume可以从各种来源&#xff08;如日志文件、消息队列、网络数据、文件系统、数据库等&#xff09;收集数据&#xff0c;并将…

分布式搜索引擎之elasticsearch基本使用2

分布式搜索引擎之elasticsearch基本使用2 在分布式搜索引擎之elasticsearch基本使用1中&#xff0c;我们已经导入了大量数据到elasticsearch中&#xff0c;实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以j接下来&#xff0c;我们研究下…

Spring IOCAOP

Spring介绍 个人博客原地址 Spring是一个IOC&#xff08;DI&#xff09;和AOP框架 Sprng的优良特性 非侵入式&#xff1a;基于Spring开发的应用中的对象可以不依赖于Spring的API 依赖注入&#xff1a;DI是控制反转&#xff08;IOC&#xff09;最经典的实现 面向切面编程&am…

如何高效的向AI大模型提问? - 提示工程Prompt Engineering

大模型的输入&#xff0c;决定了大模型的输出&#xff0c;所以一个符合要求的提问Prompt起到关键作用。 以下是关于提示工程Prompt Engineering主要方法的详细表格&#xff0c;包括每种方法的优点、缺点、应用场景以及具体示例&#xff1a; 主要方法优点缺点应用场景示例明确性…

Linux——linux系统移植

创建VSCode工程 1、将NXP官方的linux内核拷贝到Ubuntu 2、解压缩tar -vxjf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 NXP官方开发板Linux内核编译 1、将.vscode文件夹复制到NXP官网linux工程中&#xff0c;屏蔽一些不需要的文件 2、编译NXP官方EVK开发板对应的Linux系统…

【C语言】16. 内存函数

文章目录 一、 memcpy使⽤和模拟实现二、memmove使⽤和模拟实现三、memset函数的使⽤四、memcmp函数的使⽤ 一、 memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num );• 函数memcpy从source的位置开始向后复制num个字节的数据到des…

第六届地博会世界酒中国菜助力广州龙美地标美食公司推动地标发展

第六届知交会暨地博会&#xff1a;世界酒中国菜助力广州龙美地标美食公司推动地标产品创新发展 2024年12月9日至11日&#xff0c;第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会在中新广州知识城盛大启幕。本届盛会吸引了全球众多知识产权领域的专业人士和…

docker安装victoriametrics(单机版)

docker安装victoriametrics 1、单机版安装2、victoriametrics增删改查2.1 、插入数据2.1.1 组装数据插入victoriametrics(java代码插入)2.1.2 Prometheus数据插入victoriametrics2.1.3 官网push到victoriametrics写法 2.2 、查询2.2.1 、Instant query&#xff08;即时查询&…