在上一篇文章中,我介绍了一种编译器验证工具——Csmith,它随机产生有效的C代码,通过模糊测试的方式来帮助发现编译器中的Bug。但是Csmith也有其局限性,例如对C++的支持不完善等。为了克服Csmith存在的问题,并加强随机程序生成器的Bug挖掘能力,Dmitry Babokin,John Regehr和Vsevolod Livinskiy三人开发了另一个随机程序生成器——YARPGen(Yet Another Random Program Generator)。本文首先对YARPGen进行基本介绍,然后将其与Csmith进行对比,最后介绍使用YARPGen对编译器进行验证的方法。
一、YARYPGen基本介绍
YARPGen论文原文:Random testing for C and C++ compilers with YARPGen | Proceedings of the ACM on Programming Languages
使用YARPGen验证编译器的思想与Csmith一样,都是通过差分测试进行的。关于差分测试的讲解可以参考我的上一篇文章:使用Csmith自动挖掘编译器的Bug_ClarkC.的博客-优快云博客

YARPGen是为了解决Csmith在编译器验证中的局限性而开发的随机程序生成器,尤其在避免未定义行为和增强C++支持方面有所改进。通过使用‘生成策略’,YARPGen能更有效地测试编译器的优化阶段,已在多个编译器中发现大量新Bug。与Csmith相比,YARPGen在避免未定义行为时采取了不同的策略,支持更高的C++标准。文章还介绍了如何编译和使用YARPGen进行编译器验证。
最低0.47元/天 解锁文章
2722

被折叠的 条评论
为什么被折叠?



