利用大语言模型生成有效见证程序以隔离编译器缺陷
软件工程
2024-05-09 v3
摘要
编译器缺陷对安全关键型应用构成重大威胁,及时且有效地隔离这些缺陷对于保证编译器质量至关重要。然而,已报告缺陷的调试信息有限,使编译器缺陷隔离任务复杂化。现有编译器缺陷隔离方法将问题转化为测试程序变异问题,但仍受限于低效的变异策略或较高的人力需求。受近期预训练大语言模型(LLM)(如 ChatGPT)在代码生成方面的进展启发,我们提出一种名为 LLM4CBI 的新方法,利用 LLM 生成用于编译器缺陷隔离的有效测试程序。然而,由于精确提示构建与专用提示选择方面的挑战,直接利用 LLM 进行测试程序变异可能无法产生预期结果。为克服这些挑战,LLM4CBI 设计了三个新组件。首先,LLM4CBI 利用程序复杂度引导的提示生成组件,借助数据流与控制流分析识别程序中最具价值的变量与位置用于变异。其次,LLM4CBI 采用记忆式提示选择组件,使用强化学习为持续变异测试程序选择专用提示。第三,提出测试程序验证组件以选择专用反馈提示,避免在变异过程中重复相同错误。在来自 GCC 与 LLVM 的 120 个真实缺陷上与最先进方法的对比表明,LLM4CBI 具有优势:在 Top-1/Top-5 排序结果中,其比 DiWi 和 RecBi 分别多隔离 69.70%/21.74% 和 24.44%/8.92% 的缺陷。我们还证明 LLM4CBI 中使用的 LLM 组件可轻松替换而仍取得合理结果。
引用
@article{arxiv.2307.00593,
title = {Isolating Compiler Bugs by Generating Effective Witness Programs with Large Language Models},
author = {Haoxin Tu and Zhide Zhou and He Jiang and Imam Nur Bani Yusuf and Yuxian Li and Lingxiao Jiang},
journal= {arXiv preprint arXiv:2307.00593},
year = {2024}
}
备注
Accepted by IEEE Transactions on Software Engineering