- 博客(25)
- 收藏
- 关注
原创 用OpenTuner进行程序调优
编译器对于软件来说至关重要,编译的质量直接影响软件的运行效率。对编译生成的程序运行性能影响最大的就是编译器中的优化选项,但是在现代编译器中,除了最基础的-O0、-O1、-O2外,还有数百个优化选项,这些优化选项构成了2的数百次方种组合,任何一个软件开发工程师都不可能清楚地知道究竟哪些优化选项的组合能使编译出的程序达到最高运行效率。为了将寻找合适的优化选项的过程交给电脑自动完成,OpenTuner被开发了出来。
2023-01-11 22:16:58
2762
原创 YARPGen——挖掘编译器Bug的另一个工具
在上一篇文章中,我介绍了一种编译器验证工具——Csmith,它随机产生有效的C代码,通过模糊测试的方式来帮助发现编译器中的Bug。但是Csmith也有其局限性,例如对C++的支持不完善等。为了克服Csmith存在的问题,并加强随机程序生成器的Bug挖掘能力,Dmitry Babokin,John Regehr和Vsevolod Livinskiy三人开发了另一个随机程序生成器——YARPGen(Yet Another Random Program Generator)。
2023-01-03 22:53:26
1216
原创 使用Csmith自动挖掘编译器的Bug
编译器作为系统软件,无论在小型还是大型软件系统中都有着相当重要的作用。以C程序为代表的计算机软件都需要通过编译来得到可执行文件,因此由编译器导致的 Bug 会对软件带来灾难性的影响。那么如何挖掘编译器中的bug呢?Csmith是一种广泛使用的编译器验证工具,本文首先介绍用Csmith验证编译器的基本思想,然后演示Csmith的用法,最后展示一个基于Csmith的自动寻找编译器Bug的脚本。
2022-12-27 22:37:01
2234
1
原创 HEALER: Relation Learning Guided Kernel Fuzzing学习笔记
Healer采用了动静态结合的方法来学习系统调用间的关系,为操作系统内核的模糊测试生成和变异出高效且实用的测试用例。使用Healer能够帮助开发人员更高效更全面地找出内核中的bug。Healer的成功体现了系统调用之间的关系在生成和变异高质量测试用例时起着重要作用。此外,论文中的实验设计思路非常直观,第一个实验展示了相对于已有工具性能的提升,第二个实验验证了关系学习方法的有效性,第三个实验突出了其真实漏洞的挖掘能力。
2022-11-13 23:34:56
1103
原创 Java Agent介绍及其使用
一、简介Java Agent技术,也被称为Java代理、Java探针,它允许程序员利⽤其构建⼀个独⽴于应⽤程序的代理程序。Java Agent 本质上就是一个 jar 包,对于普通的Jar包,通过指定类的 main 函数进行启动,但是 Java Agent 并不能单独启动,必须依附在一个 Java 应用程序运行。使用Java Agent可以实现在Java程序运行的过程中对其进行修改。Java Agent的jar包主要包含两个部分:实现代码与配置文件...
2022-05-20 22:47:29
10093
原创 EOS源码编译安装踩坑血泪史
EOS使得区块链进入了3.0时代,处理交易的速度更快,DPos共识机制让资源消耗更小。要学习EOS,先从其源码的编译安装开始。源码安装的过程参考EOS官网教程:Shell Scripts | EOSIO Developer Docs安装环境:Ubuntu18.04官网的教程看起来操作非常简单,但是我在安装的过程中遇到了很多问题,卡了好几天才彻底解决。下面按照我的操作过程,依次描述遇到的主要问题以及找到其对应解决方法的血泪史。一、下载源码中的问题将源码下载到eosio/eos文件夹中后,因
2022-03-10 11:08:55
10376
1
原创 Ubuntu下的以太坊源码编译安装
近年来,区块链发展迅猛,以太坊的出现使得区块链进入了2.0时代,支持智能合约以及去中心化应用,使得区块链的应用范围更加广泛。对于以太坊的学习,很多人是从编译其源码开始的。下面介绍以太坊源码的详细编译过程。我使用的版本如下:Ubuntu16.04,Go1.17.7,Go-ethereum1.10.16一、Go语言的编译因为以太坊源码是使用go语言编写的,因此编译前需要先安装go语言环境。1. 下载go语言包 ...
2022-02-27 21:20:36
10147
原创 内存越界检测工具SMATUS
论文:Runtime Detection of Memory Errors with Smart Status出处:ISSTA ’21
2022-01-24 23:27:00
521
原创 Python命令行调试器pdb简介
Python语言的使用越来越广泛,已成为数据处理和人工智能软件的主要编程语言。Python代码的编写和调试可以在Anaconda等图形化开发工具中进行,但是有些人偏爱在命令行界面中进行开发和调试。本文介绍Python的命令行调试器pdb的使用方法。一、启动调试过程 用pdb调试Python代码有两种启动方式,下面依次进行介绍1. 使用命令启动python -mpdb ./filename 输入上述命令后,即可进入调试界面,如...
2022-01-08 20:49:21
1942
原创 一文读懂信息量、信息熵、相对熵(KL散度)和交叉熵
在人工智能深度学习的应用中,损失函数绝对是模型网络学习质量的关键。我们使用损失函数来表示的真实值与预测值之间的距离,进而指导模型的收敛方向。对于标量来说,我们能够很容易想到使用方差来描述误差。那么,如何表示向量之间的误差呢?交叉熵(cross-entropy)就是用来描述向量之间的误差的损失函数,首先来看它的公式: 很多人工智能初学者可能觉得这个公式不太好理解,不像方差公式那样简单易懂。要理解这...
2022-01-05 23:46:38
2937
3
原创 Ubuntu下的LibTorrent库编译
在Ubuntu20.04系统下使用源代码编译libtorrent,首先需要安装boost,这里使用boost 1.75.0版本。在boost官网下载好源码压缩包,解压后cd到boost_1_75_0目录下。网上查到的很多安装方法都不适用,直接根据官网的方法安装即可。官网链接:https://www.boost.org/doc/libs/1_75_0/more/getting_started/unix-variants.html在boost_1_75_0目录下执行下列命令完成boost安装:$ ./bo
2021-03-03 21:34:16
1246
4
原创 一种快速打印前m个素数的算法
前n个素数是指从2开始的m个素数,比如前3个素数是:2,3,5;前10个素数是:2,3,5,7,11,13,17,19,23,29。要找出前m个素数,很容易想到的算法是从2开始依次判断每一个整数是否是素数,直到找到m个素数。首先涉及到判断一个给定的数n是否为素数,其最简单的算法是,依次判断所有大于1且小于n的整数中是否存在能被n整除的数i,若存在则n不是素数,不存在则n为素数。代码实现如下://算法1int isPrimeNumber(long n){ for(int i = 2; i <
2020-08-30 20:28:08
492
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (6)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-08-02 22:30:46
763
原创 自动软件修复工具GenProg的环境搭建与初步应用(基于Ubuntu)
使用的GenProg版本为V3.2:GenProg下载将下载后的文件解压放在用户文件目录下一、环境搭建参考另一篇博客搭建Genprog运行环境、配置、安装。首先使用Ubuntu16.04.5。opam安装成功,版本号1.2.2ocaml安装成功,版本号4.02.3使用opam安装CIL成功,版本号1.7.3环境构建完成。在“编译repair”阶段,genprog-code-master/src目录下执行make时报错,错误信息如下:clark@ubuntu:~/genprog-code-
2020-07-26 12:25:26
864
1
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (5)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-07-14 14:05:42
713
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (4)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-07-12 22:38:18
579
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (3)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-07-10 21:52:18
758
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (2)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-07-08 22:38:04
1117
翻译 Automatic Software Repair: A Survey 自动软件修复:综述 (1)
原论文:Automatic Software Repair: A Survey原作者:Luca Gazzola, IEEE会员 Daniela Micucci, IEEE高级会员 Leonardo Mariani2017年10月发表在IEEE Transactions on Software Engineering原文链接:https://ieeexplore.ieee.org/document/8089448译者:ClarkC.此翻译已经原作者授权,翻译内容的准确性与原作者无关,引用.
2020-07-05 22:17:01
1939
3
翻译 Automatic Software Repair: a Bibliography 自动软件修复概览(四)
原论文标题《Automatic Software Repair: a Bibliography》原作者 Martin Monperrus,主页:https://www.monperrus.net/martin/发表于 ACM Computing Surveys, 2017原文链接:https://arxiv.org/pdf/1807.00515.pdf此翻译已获得原作者授权译者:ClarkC.引用请注明出处感谢原文作者Martin Monperrus教授提供翻译授权。鉴于原.
2020-05-17 18:10:04
661
翻译 Automatic Software Repair: a Bibliography 自动软件修复概览(三)
原论文标题《Automatic Software Repair: a Bibliography》原作者 Martin Monperrus,主页:https://www.monperrus.net/martin/发表于 ACM Computing Surveys, 2017原文链接:https://arxiv.org/pdf/1807.00515.pdf此翻译已获得原作者授权译者:ClarkC.引用请注明出处感谢原文作者Martin Monperrus教授提供翻译授权。鉴于原.
2020-05-17 18:05:14
690
翻译 Automatic Software Repair: a Bibliography 自动软件修复概览(二)
原论文标题《Automatic Software Repair: a Bibliography》原作者 Martin Monperrus,主页:https://www.monperrus.net/martin/发表于 ACM Computing Surveys, 2017原文链接:https://arxiv.org/pdf/1807.00515.pdf此翻译已获得原作者授权译者:ClarkC.引用请注明出处感谢原文作者Martin Monperrus教授提供翻译授权。鉴于原.
2020-05-13 22:44:07
694
翻译 Automatic Software Repair: a Bibliography 自动软件修复概览(一)
原文链接:https://arxiv.org/pdf/1807.00515.pdf译者:ClarkC. 引用请注明出处自动软件修复:综述Martin Monperrus摘要:本文介绍了有关自动软件修复的研究。自动软件修复是指无需人工干预,自动找到软件bug并给出解决方案。本文考虑了各种修复方法。首先,我们讨论了行为修复,其中输入测试套件,规则,模型,崩溃作为预期结果(oracle)。其次,讨论了状态修复,也称为运行时修复或运行时恢复,其中包括检查点和重新启动,重新配置,不变还原等技术。.
2020-05-12 20:46:07
784
原创 由阶乘问题引发的关于数据溢出的讨论
由阶乘问题引发的关于数据溢出的讨论为了对进程递归有更深入的理解,设计了一个计算输入数阶乘的小程序,该程序的最初版本如下(V1.0)://version: 1.0#include <stdio.h>#include <stdlib.h>long factorial(int n){ if(n == 0) return 1; if(n < 0) {...
2020-01-18 12:55:17
2805
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人