LLM 作为执行估计器:用于实用时光旅行调试的恢复缺失依赖
软件工程
2025-09-04 v5
摘要
确定读取变量 的步骤的动态数据依赖是具有挑战性的。这通常需要要么变得在 被定义于库调用中时变得不可接受的详尽仪器化,要么需要重复执行,在非确定性程序中是不实用的。在本工作中,我们提出 RecovSlicing 用于在单次运行中计算动态数据依赖,仅需部分仪器化。我们探索了 LLM 可能基于部分记录的轨迹和相关代码作为其上下文推断程序动态性的直觉。给定 (1) 记录的程序 的部分轨迹和 (2) 由查询步骤 和由 读取的查询变量 组成的切片准则,RecovSlicing 通过估计 的未记录执行来计算 在轨迹上的运行时定义。在本工作中,我们允许用户指定隐式查询变量。技术上,基于非确定性 LLM,我们解决了 (1) 从记录的执行中精确恢复运行时变量值和结构以及 (2) 对恢复变量的内存地址与记录变量的对齐以进行定义分析的挑战。我们在三个切片基准测试中评估了 RecovSlicing,涵盖 8300 个数据依赖,与 Slicer4J、ND-Slicer、LLM Slicer 和 re-execution Slicer 进行比较。RecovSlicing 在准确率(80.3%、91.1%、98.3%)和召回率(最高达 98.3%)上显著高于最佳基线(准确率: 39.0%、82.0%、59.9%;召回率: 53.4%、79.1%、87.1%)。集成到双切片回归 bug 本地化器中,它识别的回归错误数增加了 16%。
引用
@article{arxiv.2508.18721,
title = {LLM as an Execution Estimator: Recovering Missing Dependency for Practical Time-travelling Debugging},
author = {Yunrui Pei and Hongshu Wang and Wenjie Zhang and Yun Lin and Weiyu Kong and Jin song Dong},
journal= {arXiv preprint arXiv:2508.18721},
year = {2025}
}