prog-fuzz 使用教程

prog-fuzz 使用教程

prog-fuzzCompiler/source code fuzzing tool using AFL instrumentation项目地址:https://gitcode.com/gh_mirrors/pr/prog-fuzz

项目介绍

prog-fuzz 是一个针对编译器和源代码的模糊测试工具,使用 AFL(American Fuzzy Lop)进行插桩和分支覆盖率计算。该项目旨在通过生成随机的、但语法正确的程序代码来发现编译器中的潜在错误。

项目快速启动

安装

首先,克隆项目仓库到本地:

git clone https://github.com/vegard/prog-fuzz.git
cd prog-fuzz

编译

使用以下命令进行编译:

make

运行

编译完成后,可以使用以下命令启动模糊测试:

./prog-fuzz -i input -o output -- gcc -o test test.c

其中,-i input 指定输入目录,-o output 指定输出目录,-- gcc -o test test.c 指定要测试的编译器和编译命令。

应用案例和最佳实践

应用案例

prog-fuzz 已被用于发现多个编译器的错误,包括 GCC、Rust 和 LLVM/clang。例如,通过 prog-fuzz 发现了超过 100 个 GCC 错误、8 个 Rust 编译器错误和 9 个 LLVM/clang 错误。

最佳实践

  1. 选择合适的输入目录:确保输入目录包含一些初始的测试用例,以便 prog-fuzz 可以从中生成更多的测试用例。
  2. 监控输出目录:定期检查输出目录中的新测试用例和发现的错误,以便及时修复。
  3. 调整测试参数:根据需要调整 prog-fuzz 的参数,例如增加测试时间或增加生成的测试用例数量。

典型生态项目

Csmith

Csmith 是一个随机 C 程序生成器,常用于编译器测试。与 prog-fuzz 类似,Csmith 也可以生成语法正确的 C 程序,用于发现编译器中的错误。

yarpgen

yarpgen 是一个随机程序生成器,专门用于编译器和优化器的测试。yarpgen 可以生成复杂的程序结构,用于测试编译器的优化能力。

通过结合 prog-fuzz 和其他生态项目,可以更全面地测试编译器的各个方面,从而提高编译器的稳定性和性能。

prog-fuzzCompiler/source code fuzzing tool using AFL instrumentation项目地址:https://gitcode.com/gh_mirrors/pr/prog-fuzz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟颢普Eddie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值