paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Testing Concurrent Algorithms on JVM with Lincheck and IntelliJ IDEA

使用 Lincheck 和 IntelliJ IDEA 测试 JVM 上的并发算法
ISSTA Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis2024匹配度 2/10 · 论文聚焦JVM并发测试与IDE调试插件,属于PL/SE工具方向,但与用户核心关注的LLM/Agentic程序分析、静态分析、浮点程序分析或贝叶斯程序分析均无直接关联。引用 1 inbox
Aleksandr Potapov, Maksim Zuev, Evgenii Moiseenko, Nikita Koval
crossref: 2026-09-12

AI 速览

一句话:为 JVM 并发测试框架 Lincheck 开发 IntelliJ IDEA 插件,支持执行轨迹的记录回放式调试。

本文介绍了一个面向 Lincheck 的 IntelliJ IDEA 插件。Lincheck 是 JVM 上广泛使用的并发数据结构测试框架,它能自动生成并发场景并用模型检查器检验,在发现错误时给出包含所有共享内存访问与同步事件的详细执行轨迹。然而,仅有轨迹并不便于开发者定位问题。该插件提供记录-回放(record-and-replay)调试能力,在 IDE 中原生复现失败执行:它会在失败执行的起点暂停,并通过额外面板可视化失败场景、执行轨迹和数据结构当前状态。开发者可以沿轨迹前后步进,观察数据结构如何变化,从而复现并定位错误。作者认为这些新能力显著改善了调试流程,使复杂并发缺陷的识别与修复更加容易。

问题
并发数据结构在 JVM 上的错误难以复现和调试;Lincheck 虽能检测错误并生成执行轨迹,但开发者缺少在 IDE 中研究该轨迹的直观手段。
方法
实现 IntelliJ IDEA 插件,提供记录-回放调试:暂停失败执行,用面板展示失败场景、执行轨迹与数据结构状态,并允许在轨迹中前后步进观察状态变化。
评估
摘要未报告量化实验,主要通过插件在 IDE 中提供的原生调试体验与轨迹可视化、前后步进等能力来说明其对调试流程的改进。
原文摘要(Abstract)

This paper presents an IntelliJ IDEA plugin for Lincheck -- a popular framework for testing concurrent data structures on JVM. The Lincheck framework automatically generates concurrent scenarios and examines them with a model checker, providing a detailed execution trace that reproduces the detected error. This trace includes all shared memory access and synchronization events. The IntelliJ IDEA plugin offers record-and-replay debugging to study the execution trace, providing native debugging experience in the IDE. The Lincheck plugin pauses the failed execution at the beginning and provides additional panels that visualize the failed scenario, the execution trace, and the current state of the data structure. One can step through the trace and reproduce the error, moving forward and backward and observing how the data structure changes. These novel capabilities significantly improve the debugging process, making identifying and fixing complex concurrency bugs easier.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot8573,
  title = {Testing Concurrent Algorithms on JVM with Lincheck and IntelliJ IDEA},
  author = {Aleksandr Potapov and Maksim Zuev and Evgenii Moiseenko and Nikita Koval},
  booktitle = {ISSTA},
  year = {2024},
  doi = {10.1145/3650212.3685301}
}