IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> libsecp256k1比特币密码算法开源库(二) -> 正文阅读

[区块链]libsecp256k1比特币密码算法开源库(二)

2021SC@SDUSC

libsecp256k1的构建与测试


在上一篇博客中,基本环境搭建和代码的整理已经结束,本篇将进行项目的构建与测试。通过这一过程加深对项目的理解和认识,便于认识项目中哪些文件代码才是需要重点分析的核心片段。

构建步骤

前面提到,libsecp256k1 是使用 autotools 构建的,autogen.sh是个shell脚本,它的作用就是将自动产生Makefile的过程集成到脚本中,简化操作,执行代码./autogen.sh即可,但事实上经过我的尝试,输入该语句并没有反应,即便是尝试输入chmod 777 ./autogen.sh也无济于事。生成makefile的具体过程还请参加我的上一篇博客。

下面需要执行代码./configure,执行结果如下:
在这里插入图片描述
在这里插入图片描述
通过./configure命令对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,通常./configure命令是源代码安装的第一步。

执行make命令,能正常执行make命令的前提是makefile文件已经正常生成,否则只会得到下图这样的结果:
在这里插入图片描述
make命令会根据Makefile文件编译源代码、连接、生成目标文件、可执行文件。

执行make check命令,对上一步 make 进行检查,确保 make 是没有错误的,执行结果error为0,执行该步操作等待了较长时间,大概三分钟,测试图如下:
在这里插入图片描述
同时该指令输入结束后会自动生成三个文件,分别为tests.log文件,tests.trs文件和test-suite.log文件,三个文件中有关于测试结果的信息,测试结果如下图所示,在图片左上角你可以看到三个文件的名字:
tests.log文件
在这里插入图片描述
在这里插入图片描述
下面执行一个可选命令sudo make instal,该命令可将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。执行结果如下图所示:
在这里插入图片描述
在这里插入图片描述

Exhaustive tests

下面执行命令./exhaustive_tests 运行可执行文件exhaustive_tests,运行时会自动生成相应测试参数。
在这里插入图片描述

下面执行命令valgrind --max-stackframe=2500000 ./exhaustive_tests ,在执行该命令前需要前先安装valgrind,valgrind用于Linux程序的内存调试和代码剖析,可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得程序更加稳固。这里使用 valgrind需要增加最大堆栈大小,将其设为250000。输入安装指令即可下载安装。
在这里插入图片描述
增加最大堆栈大小后再执行exhaustive_tests。结果如下所示,该步操作进行较长时间,大概五分钟才运行结束:
在这里插入图片描述

测试覆盖率

该libsecp256k1库旨在全面覆盖可到达的线路和分支。为了直观看到覆盖率,可以生成测试覆盖率的报告。要创建报告,需要配置–enable-coverage(在配置前需确认自己已经配置好gcc):
./configure --enable-coverage
在这里插入图片描述
运行测试:输入make check命令,可以看到目标可执行文件tests发生错误,tests文件消失。
在这里插入图片描述
在这里插入图片描述
由于gcovr包括分支coverage报告,可用它来创建报告,输入gcovr --exclude 'src/bench*' --print-summary命令。
在这里插入图片描述
要使用带颜色和带注释的源代码创建 HTML 报告,首先创建coverage目录文件,输入mkdir -p coverage命令即可看到当前目录下创建了一个名为coverage的文件夹。
在这里插入图片描述
在coverage目录下创建html文件需输入指令gcovr --exclude 'src/bench*' --html --html-details -o coverage/coverage.html,输入完成后在coverage目录下可看到生成的12个html文件。
在这里插入图片描述
在这里插入图片描述
报告中对src目录下9个文件和bits目录下2个文件生成了html文件报告。
在这里插入图片描述
在这里插入图片描述
以field_impl.h文件为例,生成报告如下图所示:在这里插入图片描述
除上述11个文件报告之外,还有一个coverage总报告,对Lines和Branches的覆盖率进行总体评估。报告情况如下图所示:
在这里插入图片描述

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章           查看所有文章
加:2021-10-07 13:54:09  更:2021-10-07 13:54:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:28:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码