当前位置: 首页 > news >正文

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).

再向后是单元测试

相关文章:

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

nonolog起步笔记-6-log解压过程初探 再看解压过程建立调试工程修改makefile添加新的launch项 注:重新学习nanolog的README.mdPost-Execution Log Decompressor 下面我们尝试了解,解压的过程,是如何得到文件头部的meta信息的。 再看解压过程 …...

【MySQL 进阶之路】基础语法及优化技巧

MySQL DML 基础语法及优化技巧 一、DML(数据操作语言)概述 DML 是数据库操作语言的子集,用于数据的增、删、改、查四个基本操作。MySQL 中的 DML 操作通常是指以下四种基本操作: INSERT:插入数据SELECT:…...

微信小程序做电子签名功能

文章目录 最近需求要做就记录一下。 人狠话不多&#xff0c;直接上功能&#xff1a; 直接搂代码吧,复制过去就可以用&#xff0c;有其他需求自己改吧改吧。 signature.wxml <!-- 电子签名页面 --> <custom-navbar title"电子签名"show-home"{{fals…...

PR的选择与移动

选择工具 可以选择序列上的剪辑&#xff0c;如果需要多选可以按住shift键选中多个剪辑 CtrlA&#xff1a;可以进行全选 编组 选中多个剪辑后“右键-编组“可以将所选的剪辑连接在一起。这时单击任意剪辑都可以选中全部 向前选择轨道工具与向后选择轨道工具 向前选择轨道工具…...

Linux系统 —— 进程系列 - 进程状态 :僵尸与孤儿

目录 1. 进程状态的概念 1.1 课本上的说法&#xff1a;名词提炼 1.2 运行&#xff0c;阻塞和挂起 1.2.1 什么叫做运行状态&#xff08;running&#xff09;&#xff1f; 1.2.2 什么叫做阻塞状态&#xff08;sleeping&#xff09;&#xff1f; 1.2.3 什么叫做挂起状态&…...

linux/centOS7用户和权限管理笔记

linux系列中可以&#xff1a; 配置多个用户配置多个用户组用户可以加入多个用户中 linux中关于权限的管理级别有2个级别&#xff0c;分别是&#xff1a; 针对用户的权限控制针对用户组的权限控制 一&#xff0c;root用户 root用户拥有最大的系统操作权限&#xff0c;而普通…...

使用C#基于ADO.NET编写MySQL的程序

MySQL 是一个领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。MySQL 在网络上特别流行。MySQL 数据库可在大多数重要的操作系统平台上使用。它可在 BSD Unix、Linux、Windows 或 Mac OS 上运行。MySQL 有两个版本&#xff1a;MySQL 服务器系统和 MySQL 嵌入…...

Scala函数的泛型

package hfd //泛型 //需求&#xff1a;你是一个程序员&#xff0c;老板让你写一个函数&#xff0c;用来获取列表中的中间元素 //List(1,2,3,4,5)>中间元素的下标长度/2 >3 //getMiddleEle object Test38_5 {def print1():Unit{println(1)}def print2(): Unit {println(…...

云轴科技ZStack亮相中国生成式AI大会上海站 展现AI Infra新势力

近日&#xff0c;以“智能跃进&#xff0c;创造无限”为主题的2024中国生成式AI大会在上海举办。本次大会由上海市人工智能行业协会指导&#xff0c;智东西、智猩猩共同发起&#xff0c;邀请了人工智能行业的顶尖嘉宾汇聚一堂&#xff0c;以前瞻性视角解构和把脉生成式AI的技术…...

态感知与势感知

“态感知”和“势感知”是两个人机交互中较为深奥的概念&#xff0c;它们虽然都与感知、认知相关&#xff0c;但侧重点不同。下面将从这两个概念的定义、区分以及应用领域进行解释&#xff1a; 1. 态感知 态感知通常指的是对事物当前状态、属性或者内在特征的感知。它强调的是在…...

汽车零部件设计之——发动机曲轴预应力模态分析仿真APP

汽车零部件是汽车工业的基石&#xff0c;是构成车辆的基础元素。一辆汽车通常由上万件零部件组成&#xff0c;包括发动机系统、传动系统、制动系统、电子控制系统等&#xff0c;它们共同确保了汽车的安全、可靠性及高效运行。在汽车产业快速发展的今天&#xff0c;汽车零部件需…...

谷歌浏览器的网页数据导出与导入方法

谷歌浏览器是全球最受欢迎的网络浏览器之一&#xff0c;它不仅提供了快速、安全的浏览体验&#xff0c;还拥有丰富的功能和扩展程序。本文将详细介绍如何在Chrome浏览器中导出和导入网页数据&#xff0c;同时涵盖一些相关的实用技巧&#xff0c;如调试JavaScript、自动填充表单…...

pytroch环境安装-pycharm

环境介绍 安装pycharm 官网下载即可&#xff0c;我这里已经安装&#xff0c;就不演示了 安装anaconda 【官网链接】点击下载 注意这一步选择just me 这一步全部勾上 打开 anaconda Prompt 输入conda create -n pytorch python3.8 命令解释&#xff1a;创建一个叫pytorch&…...

【大模型】PostgreSQL是向量数据库吗

PostgreSQL&#xff08;通常简称为 Postgre&#xff09;本身并不是一个专门的向量数据库&#xff0c;但它可以通过扩展或插件支持向量数据的存储、检索和处理&#xff0c;因此可以在某些场景下作为向量数据库使用。以下是关于 PostgreSQL 是否可以作为向量数据库的详细说明&…...

【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码

目录 一、PyQt5介绍&#xff1a; &#xff08;1&#xff09;PyQt简介&#xff1a; &#xff08;2&#xff09;PyQt API&#xff1a; &#xff08;3&#xff09;支持的环境&#xff1a; &#xff08;4&#xff09;安装&#xff1a; &#xff08;5&#xff09;配置环境变量…...

Qt 联合Halcon配置

文章目录 配置代码窗口绑定 配置 选择添加库 选择外部库 LIBS -LC:/Program Files/MVTec/HALCON-17.12-Progress/lib/x64-win64/ LIBS -lhalconcpp\-lhdevenginecpp\-lhalconINCLUDEPATH C:/Program Files/MVTec/HALCON-17.12-Progress/include DEPENDPATH C:/Program Fil…...

Vue导出报表功能【动态表头+动态列】

安装依赖包 npm install -S file-saver npm install -S xlsx npm install -D script-loader创建export-excel.vue组件 代码内容如下&#xff08;以element-ui样式代码示例&#xff09;&#xff1a; <template><el-button type"primary" click"Expor…...

C#调用python 程序

需要通过nuget安装ironphthon using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Win…...

day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、复习 1.1 断言&#xff08;3种&#xff09; 1.2 关联&#xff08;3种&#xff09; 1.3 录制脚本 2、Jmeter直连数据库 2.1 直连数据库——使用场景 2.2 直连数据库——操作步骤 2.2.1 案例1&…...

机器学习详解(4):多层感知机MLP之理论学习

文章目录 1 MLP知识引入1.1 深度学习的发展1.2 神经元(Neuron)1.3 感知机(Perception)1.3.1 介绍1.3.2 感知机在二分类中的应用1.3.2.1 理论1.3.2.2 感知机计算实例 1.3.3 感知机总结 2 MLP(Multilayer Perceptron)2.1 介绍2.2 反向传播2.2.1 实例2.2.2 反向传播计算实例 3 总结…...

文科生被AI大厂疯抢,月薪3万起,这条热搜,你真的看懂了吗?

最近有个话题悄悄冲上热搜&#xff0c;看得不少人心里一热——#AI大厂月薪3万疯抢文科生#。 事情起因是360创始人周鸿祎在一次采访里说了个挺颠覆的观点&#xff1a;“随着AI技术的发展&#xff0c;文科生将比理科生更吃香。”截图来源微博&#xff08;如侵删&#xff09; 他给…...

GPEN图像修复新手入门:界面介绍与功能详解

GPEN图像修复新手入门&#xff1a;界面介绍与功能详解 1. 认识GPEN图像修复工具 你是否遇到过这样的情况&#xff1a;翻出老照片想分享给亲友&#xff0c;却发现照片已经泛黄、模糊甚至出现划痕&#xff1f;GPEN图像修复工具就是为解决这些问题而生的专业解决方案。这个由科哥…...

LH6828@ACP#6828#484 USB3.1 全通道 4:1/1:4 10Gbps 多路复用 / 解复用器 产品规格、应用分享及CH484规格对比

LH6828 是一款高性能全通道高速双向无源开关&#xff0c;专为 USB Type-C 生态系统设计&#xff0c;深度适配 USB3.1 Gen1&#xff08;5Gbps&#xff09;/Gen2&#xff08;10Gbps&#xff09;超高速传输协议&#xff0c;支持 4 组设备全通道信号的 4:1/1:4 双向切换&#xff0c…...

Java: 手动实现DeepSeek R1工具调用,基于ReAct与Spring AI的实践指南

1. DeepSeek R1工具调用的现状与挑战 DeepSeek R1作为当前热门的开源大模型&#xff0c;在实际应用中经常会遇到需要调用外部工具的场景。但很多开发者在使用过程中发现&#xff0c;当前版本的DeepSeek R1并不支持原生的工具调用功能。这意味着当我们想让模型执行诸如查询天气、…...

PathOfBuilding:颠覆式离线构筑计算器如何精准解决流放之路角色规划难题

PathOfBuilding&#xff1a;颠覆式离线构筑计算器如何精准解决流放之路角色规划难题 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 在《流放之路》的复杂世界中&#xff0c;…...

GoodbyeDPI完全上手指南:从架构到实操的进阶之路

GoodbyeDPI完全上手指南&#xff1a;从架构到实操的进阶之路 【免费下载链接】GoodbyeDPI GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows) 项目地址: https://gitcode.com/GitHub_Trending/go/GoodbyeDPI 开源项目使用涉及对项目结构的深入…...

如何用TrollInstallerX在iOS 14-16设备上安装TrollStore

如何用TrollInstallerX在iOS 14-16设备上安装TrollStore 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0-16.6.1系统设计的TrollStor…...

页游党必看!传奇、篮球、策略全都有,点击即玩

对于喜欢玩网页游戏的朋友来说&#xff0c;找一个靠谱、福利多、游戏全的平台太重要了&#xff01;不用下载、点击即玩&#xff0c;还能安心挂机不担心跑路&#xff0c;这样的平台才是真刚需&#xff5e; 今天就给大家安利一个深耕页游十余载的老牌平台——602游戏平台&#x…...

提示词工程完全指南

提示词工程完全指南 Prompt Engineering Complete Guide 来源参考&#xff1a;OpenAI 官方指南、DAIR.AI Prompt Engineering Guide、IBM、Google Research、斯坦福 CS224N 整理用于学习交流 目录 什么是提示词工程六大核心策略&#xff08;OpenAI 官方&#xff09;基础技巧进…...

嵌入式系统的实时性能优化详解

嵌入式系统的实时性能优化详解 实时系统概述 实时系统是指能够在规定的时间内完成特定任务的系统&#xff0c;其正确性不仅取决于计算结果的正确性&#xff0c;还取决于结果产生的时间。在嵌入式系统中&#xff0c;实时性能优化至关重要。 实时系统分类 硬实时系统&#xf…...