Design and Implementation of Parallel Debugger and Profiler for MPJ Express
MPJ Express是一个消息传递系统,允许计算科学家在高性能计算(HPC)硬件上编写和执行并行Java应用程序。尽管MPJ Express软件在Java HPC社区中获得了成功的采用,但它目前不提供对调试和分析并行应用程序的任何支持,因此迫使其用户依赖手动和繁琐的调试/分析方法。对这些工具的支持对于帮助应用程序开发人员提高整体生产力至关重要。为了解决这个问题,我们已经开发了调试和分析工具的MPJ快递,这是本文的主要主题。这些工具的主要设计目标包括:1)保持与现有日志记录,调试和可视化工具的兼容性,2)通过扩展现有的调试/分析工具而不是重新发明轮子来构建这些工具。第一个工具名为MPJAR,构建在开源Eclipse集成开发环境(IDE)上。它提供了一个使用Eclipse插件开发环境(PDE)开发的基于Eclipse的插件。默认的Eclipse调试器目前不支持调试在计算集群上运行的并行应用程序。第二个工具名为MPJProf,是一个基于TuningandAnalysisUtility(TAU)的实用程序,TAU是一个开源的性能评估工具。我们的目标是利用TAU来生成配置文件和跟踪,从而对使用MPJ Express并行化的Java应用程序进行配置,这些配置文件和跟踪稍后可以使用paraprof和Jumpshot等现有工具进行可视化。在论文的最后,我们量化了使用MPJProf的开销,我们发现…
2014-08-27 cs.DC cs.SE
CircInspect: Integrating Visual Circuit Analysis, Abstraction, and Real-Time Development in Quantum Debugging
The University of British Columbia(不列颠哥伦比亚大学)
本文提出 CircInspect,一款面向 Python 与 PennyLane 量子程序的交互式调试工具,通过断点、实时开发、线路可视化和信息抽象帮助开发者理解并排查量子软件。
2025-09-04 cs.SE
Type Variability and Completeness of Interfaces in Java Applications
接口被广泛用作Java应用程序的中心设计元素。虽然接口是类似于抽象类的抽象类型,但Java应用程序中接口的使用可能与抽象类的使用有很大的不同。与抽象类不同,接口旨在支持Java程序中的多重继承。因此,接口的目的是编码属于不同类类型层次结构的类之间的共享相似性。因此,经常将接口用作部分类型,其中接口指定其实现类的一个特定方面或用法。在本文中,我们从两个角度研究接口在Java应用程序中的使用。首先,我们研究接口作为属于不同类类型层次结构的类的使用(即,接口的类型可变性)。其次,我们研究接口作为实现类的部分类型的使用(即,接口的类型完整性)。
2014-07-31 cs.SE
Control and Data Flow Execution of Java Programs
十年来,对程序的理解已经成为学生以及参与软件开发过程和为开放问题提供解决方案的其他人的必修任务。在这方面,以最好的方式显示在一个图形表示的问题是一个关键的优势,以更好地理解it.We提供的模型和结构,Java程序理解的控制和数据流分析的执行。特别是它有助于理解Java程序的静态分析,这是软件维护的一个极其重要的阶段。我们提供了Java程序可视化的信息和模型,可以帮助更好地理解程序的学习和分析目的。为构建可视化工具提供的思想是从Java程序的执行中提取数据和控制分析。通过实例分析,证明了本文的思想对理解Java程序的静态分析、软件调试和软件维护具有重要意义。
2017-07-27 cs.SE
Optimal Divide and Query (extended version)
自动调试是一种半自动调试技术,允许程序员精确地识别错误的位置,而无需检查源代码。该技术已经成功地适应了所有的范例,并且已经为Haskell,Prolog或Java等语言发布了成熟的实现。在过去的三十年中,Shapiro提出并由Hirunkitti改进的算法一直被认为是最佳的。在本文中,我们首先表明,该算法不是最优的,而且,在某些情况下,它是无法找到所有可能的解决方案,因此它是不完整的。然后,我们提出了一个新的版本的算法,证明是最佳的,我们引入一些方程,让算法来确定所有的最优解。
2011-07-26 cs.PL cs.SE
The Visual Debugger Tool
本文提出一种集成于IntelliJ IDEA的可视化调试工具,通过对象图图形化展示程序执行信息,以降低软件调试与维护成本。
2024-04-19 cs.SE
Context-Sensitive Abstract Interpretation of Dynamic Languages
针对动态语言IDE工具因动态特性导致控制流/数据流识别失效的问题,提出基于抽象解释的静态分析算法,可分析动态元编程与反射,已实现支持JavaScript子集的原型分析器,弥合动静态语言工具差距。
2024-01-31 cs.LO cs.PL cs.SE
Applying CodeBERT for Automated Program Repair of Java Simple Bugs
软件调试和程序修复是软件工程中最耗时和劳动密集型的任务之一,自动化将使其受益匪浅。在本文中,我们提出了一种基于CodeBERT的新型自动程序修复方法,CodeBERT是一种基于变换器的神经架构,在大型源代码语料库上进行了预训练。我们在ManySStuBs 4J小型和大型数据集上微调我们的模型,以自动生成修复代码。结果表明,我们的技术在19-72%的情况下准确地预测了开发人员实现的固定代码,具体取决于数据集的类型,每个错误不到一秒。我们还观察到,我们的方法可以生成不同长度的修复(短和长),并可以修复不同类型的错误,即使在训练数据集中只存在这些类型的错误的几个实例。
2021-03-30 cs.SE
DeepSeer: Interactive RNN Explanation and Debugging via State Abstraction
University of Alberta(阿尔伯塔大学);The University of Tokyo(东京大学);Purdue University(普渡大学)
递归神经网络(RNN)在处理序列数据时具有优越的性能,已被广泛应用于自然语言处理(NLP)任务中。然而,由于RNN固有的复杂性和缺乏透明度,解释和调试RNN具有挑战性。虽然已经为RNN提出了许多可解释的AI(XAI)技术,但其中大多数只支持局部解释而不是全局解释。在本文中,我们介绍了DeepSeer,这是一个交互式系统,它在多个紧密协调的视图中提供了RNN行为的全局和局部解释,用于模型理解和调试。DeepSeer的核心是一种状态抽象方法,它将语义相似的隐藏状态捆绑在RNN模型中,并将模型抽象为有限状态机。用户可以通过检查与每个状态相关联的文本模式以及状态之间的转换来探索全局模型行为。用户还可以通过检查给定输入的状态跟踪和中间预测结果来深入到各个预测中。一项有28名参与者的受试者间用户研究表明,与流行的XAI技术LIME相比,使用DeepSeer的参与者对RNN模型行为进行了更深入、更全面的评估,更准确地识别了错误预测的根本原因,并提出了更可行的计划来提高模型性能。
2023-03-02 cs.HC cs.LG cs.SE
Timestamp Based Execution Control for C and Java Programs
许多程序员不得不处理一个被覆盖的变量,例如由于别名问题。罪魁祸首显然是在bug出现之前对该内存位置的最后一次写访问。移除这些bug的常用技术是从调试器开始,通过(1)找到最后一次写入,(2)通过从头开始重新执行程序,将执行的控制点移回该时间。我们希望将其自动化。如果我们能以某种方式标记在步骤(1)中发现的最后一次写入并控制执行点将其移回此时,则步骤(2)很容易。在本文中,我们提出了一个新的概念,位置,即程序执行轨迹中的一个点,需要上述步骤(2)。该职位使调试器能够自动控制程序执行,以支持常见的调试活动。我们在C中通过修改GCC实现了位置,在Java中通过字节码Transformer实现了位置。测量结果表明,该位置可以提供可接受的开销量。
2003-09-17 cs.SE
Procedural Refinement by LLM-driven Algorithmic Debugging for ARC-AGI-2
Nanjing University(南京大学)
提出一种神经符号精炼方法ABPR,结合LLM与Prolog元解释器,通过证明树推导进行语义重检,在ARC-AGI-2上实现高通过率,并扩展到RAVEN风格推理任务。
2026-05-23 cs.AI cs.SE
Data-Driven Debugging for Functional Side Channels
University of Colorado Boulder(科罗拉多大学博尔德分校);TU Wien(维也纳技术大学)
通过旁路渠道的信息泄漏是一个普遍存在的问题,即使在安全关键型应用程序中也是如此。当攻击者知道服务器的秘密值在一定时间内保持固定时,功能侧信道就会出现。然后,攻击者可以观察服务器在不同公共输入序列上的执行,每个公共输入都与相同的秘密输入配对。因此,对于每个秘密,攻击者观察到从公共输入到执行时间的函数,例如,她可以比较不同秘密的这些函数。首先,我们介绍了一个概念的功能侧信道的非干扰。我们专注于噪声观测的情况下,在那里我们用例子证明,有一个实际的功能侧通道的程序,将被视为信息泄漏免费或被低估使用标准定义。其次,我们开发了一个框架和技术,用于调试功能侧通道的程序。我们扩展进化模糊技术,以产生利用公共输入的响应时间的功能依赖性的输入。我们适应现有的结果和算法在功能数据分析模型的功能和发现侧通道的存在。我们使用标准决策树学习的功能扩展来查明导致侧信道的代码片段(如果存在)。我们经验性地评估我们的工具FUCHSIA的一系列微基准测试和现实的Java程序的性能。在一组基准测试中,我们表明FUCHSIA在检测侧通道类方面优于最先进的技术。在实际的程序中,我们展示了FUCHSIA在分析Java程序中的函数侧通道时的可扩展性,有数千种方法。此外,我们还展示了FUCHSIA在查找侧通道方面的有用性,包括OpenJDK中的零日漏洞和Jetty中的另一个漏洞,该漏洞已被开发人员修复。
2020-02-08 cs.CR cs.LG cs.SE
DebugRepair: Enhancing LLM-Based Automated Program Repair via Self-Directed Debugging
Shandong University(山东大学);Fudan University(复旦大学);Tsinghua University(清华大学);Peking University(北京大学);The Hong Kong Polytechnic University(香港理工大学)
DebugRepair通过模拟调试收集中间运行时证据,提升基于大语言模型的自动程序修复性能,实验表明其在修复缺陷方面优于现有方法。
2026-04-21 cs.SE
Differential Performance Debugging with Discriminant Regression Trees
University of Colorado Boulder(科罗拉多大学博尔德分校)
差分性能调试是一种发现性能问题的技术。它适用于程序的性能对于不同类别的输入(出乎意料地)不同的情况。我们的任务是解释不同的输入类之间的程序内部的渐近性能的差异。我们提出了一种基于判别回归树(DRT)学习问题的数据驱动技术,其目标是区分不同类别的输入。我们提出了一种新的算法DRT学习,首先聚类数据到功能集群,捕获不同的渐近性能类,然后调用现成的决策树学习算法来解释这些集群。我们专注于线性功能集群和适应经典的聚类算法(K-均值和光谱)来产生它们。对于K-means算法,我们将聚类质心的概念从一个点推广到一个线性函数。我们通过定义一个新的核函数来捕捉两个数据点之间的线性相似性的概念,从而适应谱聚类。我们评估我们的方法组成的Java程序,我们感兴趣的调试性能的基准测试。我们表明,我们的算法显着优于其他著名的回归树学习算法的运行时间和分类精度。
2017-11-28 cs.AI cs.PF cs.SE
Context-Specific Instruction: A Longitudinal Study on Debugging Skill Acquisition and Retention for Novice Programmers
Washington State University(华盛顿州立大学)
本研究通过八周纵向实验证明,结合问题细节的上下文特定调试指导能显著提升新手错误定位技能习得速度与保持效果,优于抽象原则和通用步骤。
2026-11-02 cs.CY cs.SE
Debug-Localize-Repair: A Symbiotic Construction for Heap Manipulations
我们提出Wolverine 2,一个集成的堆操作程序的本地化修复环境。Wolverine 2提供了一个交互式的调试环境:当具体执行一个程序通过一个交互式的外壳上支持常见的调试设施,Wolverine 2显示抽象的程序状态(框和箭头图)作为一个视觉援助的程序员,包装一个新的,证明导向修复算法,快速合成修复补丁和一个新的错误定位算法,以减少搜索空间的修复。Wolverine 2支持生成的补丁的“热修补”,以提供无缝的调试环境,并且还促进了新的调试-本地化-修复可能性:\textit{specification refinement}和\textit{checkpoint-based hopping}。我们评估Wolverine 2上6400错误程序(使用自动故障注入生成)的各种数据结构,如单,双,循环链表,AVL树,红黑树,八字树和二叉搜索树; Wolverine 2可以修复所有的错误实例在现实的程序员等待时间(在大多数情况下小于5秒)。Wolverine 2还可以修复超过80%的247(错误)学生提交的合理尝试。
2022-02-02 cs.PL cs.SE
Design and Implementation of Data Acquisition and Analysis System for Programming Debugging Process Based On VS Code Plug-In
ONUS Global Fulfillment Solutions(ONUS全球履约解决方案)
本文设计并实现了一个基于VS Code插件的编程调试过程数据采集与分析系统,通过抽象语法树模型和多维调试场景,实现调试行为的全过程监控与精准分析,为编程调试教学提供过程性评价支持。
2025-11-08 cs.SE cs.SI
A Bayesian Framework for Automated Debugging
这占用了开发人员很大一部分时间。因此,包括故障定位(FL)和自动程序修复(APR)的自动调试技术由于其在调试任务中帮助开发人员的潜力而获得了显著的关注。尽管对这些主题进行了深入的研究,但我们并不知道一个理论框架,它强调了自动调试背后的原则,并允许对技术进行抽象分析。这样一个框架将提高我们对这一努力的理解,并提供一种正式分析技术和方法的方法。为此,我们首先提出了一个贝叶斯框架的理解自动化修复,并发现,结合具体声明的目标,自动化调试,我们可以恢复最大的故障定位公式从以前的工作,以及分析现有的APR技术和他们的基本假设。作为一种手段,实证证明我们的框架,我们进一步提出BAPP,贝叶斯补丁优先级技术,采用中间程序值来分析可能的补丁位置和修复行动,其核心方程是由我们的贝叶斯框架。我们发现,将程序值允许BAPP更精确地识别正确的补丁:当应用到kPAR生成的补丁,排名产生的BAPP减少了68%的补丁验证所需的数量,从而减少了平均34分钟的修复时间。此外,BAPP提高了FL的精度,将所研究的错误的acc@5从8增加到11。这些结果突出了价值认知自动调试技术的潜力,并进一步验证了我们的理论框架。最后,提供了框架建议的未来方向。
2022-12-29 cs.SE
Compiler Testing using Template Java Programs
我们提出了JAttack,一个框架,使基于模板的测试编译器。使用JAttack,开发人员编写一个模板程序,该程序描述了一组要生成的程序,并作为编译器的测试输入。这样的框架使开发人员能够将他们的领域知识结合在测试编译器上,给出了一个基本的程序结构,允许探索可以触发复杂编译器优化的复杂程序。开发人员用宿主语言(Java)编写一个模板程序,其中包含需要JAttack填补的漏洞。每一个使用领域特定语言编写的洞都在扩展抽象语法树(eAST)中构造一个节点。eAST节点定义孔的搜索空间,即,一组表达式和值。JAttack通过执行模板生成程序,并通过随机选择表达式和值(在由漏洞定义的搜索空间内可用)来填充每个漏洞。此外,我们引入了几个优化,以减少JAttack的生成成本。虽然JAttack可用于测试各种编译器功能,但我们展示了它在帮助测试即时(JIT)Java编译器方面的功能,这些编译器在执行足够数量的执行后会在运行时进行优化。使用JAttack,我们发现了六个关键的bug,这些bug已经被Oracle开发人员确认。其中四个是以前未知的,包括两个未知的CVE(常见漏洞和暴露)。JAttack展示了将开发人员的领域知识(通过模板)与随机测试相结合以检测JIT编译器中的错误的强大功能。
2022-09-09 cs.PL cs.SE
An Empirical Study on Practicality of Specification Mining Algorithms on a Real-world Application
动态模型推理技术是近年来许多研究项目的中心。现在有多种最先进算法的开源实现,它们提供基本的抽象和合并功能。这些工具和算法中的大多数都是针对一个特定的应用程序开发的,这就是程序理解。输出模型可以抽象出程序的细节,并以简洁且易于理解的形式表示软件行为。然而,较少研究的一个应用上下文是使用这样的推断模型进行调试,其中要抽象的行为是错误行为(例如,包括失败的测试用例的一组执行跟踪)。我们试图在现实世界的工业环境中应用一些现有的模型推理技术(在一个有前途的工具MINT中实现),以支持程序的调试理解。我们最初的实验表明,无论是在实现方面,以及算法的许多限制。本文将讨论故障的根本原因,并提出未来改进的想法。
2019-03-29 cs.SE
Symmaries: Automatic Inference of Formal Security Summaries for Java Programs
Newcastle University(纽卡斯尔大学);OcamlPro;University of Liverpool(利物浦大学)
Symmaries通过自动化生成Java程序的安全摘要,提升静态分析工具的精度和可扩展性。
2025-12-23 cs.CR cs.FL cs.PL
Recommending Stack Overflow Posts for Fixing Runtime Exceptions using Failure Scenario Matching
使用在线Q&A论坛(如Stack Overflow(SO))来指导解决程序错误以及其他开发问题,在现代软件开发实践中很常见。异常(RE)是SO上积极讨论的一类重要的bug。在这项工作中,我们提出了一种技术和原型工具,称为MAESTRO,可以自动推荐一个SO后,是最相关的开发人员的代码中给定的Java RE。MAESTRO将开发人员代码中的异常生成程序场景与SO帖子中讨论的场景进行比较,并返回最接近的匹配帖子。为了有效地提取和比较异常场景,MAESTRO首先使用帖子中的答案代码片段来暗示帖子的问题代码片段中的一个行子集负责异常,然后将这些行与开发人员的代码进行比较,以各自的抽象程序图(APG)表示。APG是一个简化和抽象的衍生抽象语法树,在这项工作中提出的,它允许一个有效的比较体现在高层次的程序结构的功能,同时丢弃许多低层次的语法或语义差异。我们评估MAESTRO的基准测试的Java RE的78个实例中提取的前500名Java项目在GitHub上,并表明,MAESTRO可以返回一个高度相关或有点相关的SO后对应的异常实例在71%的情况下,相比之下,相关的职位返回只有8% - 44%的情况下,由四个竞争对手的工具基于最先进的技术。我们还进行了用户体验研究MAESTRO与10个Java开发人员,其中参与者判断MAESTRO报告高度相关或有点相关的职位在80%的情况下。在某些情况下,该帖子…
2020-09-21 cs.SE
Event-based Program Analysis with DeWiz
由于并行和分布式程序的复杂性增加,它们的调试被认为是软件生命周期中最困难和最耗时的部分。因此,工具支持是向用户隐藏复杂性的关键。然而,大多数现有的工具似乎不足,只要考虑中的程序利用超过几个处理器在很长的执行时间。这个问题是由新的调试工具DeWiz(调试向导),其重点在于可扩展性解决。DeWiz有一个模块化的、可扩展的体系结构,并使用事件图模型作为所研究程序的表示。DeWiz提供了一组模块,可以组合这些模块来生成、分析和可视化事件图数据。在这个处理管道中,工具集试图提取有用的信息,这些信息以任意抽象级别呈现给用户。此外,DeWiz是一个框架,可用于轻松实现任意用户定义的模块。
2003-10-06 cs.SE
AgentStepper: Interactive Debugging of Software Development Agents
University of Stuttgart(斯图加特大学);CISPA Helmholtz Center for Information Security(CISPA 沃尔夫冈·泡利信息安全中心)
AgentStepper是一种用于LLM软件工程代理的交互式调试工具,通过结构化对话和逐步执行提升调试效率,减少开发者工作量。
2026-02-06 cs.AI cs.SE
Debugging WebAssembly? Put some Whamm on it!
本文提出 Whamm,一种用于 WebAssembly 的声明式插桩 DSL,通过抽象插桩策略并利用字节码重写与引擎优化,解决了工具碎片化、高开销和底层定制繁琐的问题,实现了高效且可编程的程序监控。
2025-04-28 cs.SE
Causality Analysis for Concurrent Reactive Systems (Extended Abstract)
我们提出了一个全面的语言理论的因果关系分析框架,用于解释安全属性违反设置的并发反应系统。我们的框架使我们能够统一表达一些因果关系的概念,研究领域的人工智能和正式的方法,以及定义新的,是在这些领域的潜在利益。此外,我们的形式化提供了推理的手段,其中大多数是独立考虑在以前的工作中的各个概念之间的关系,并允许我们判断的适当性,不同的定义在系统设计中的各种应用。特别是,我们认为因果关系分析概念的调试,错误恢复能力,并在并发反应系统的责任决议。最后,我们提出了基于自动机的算法计算各种因果集的基础上,我们的语言理论编码,并推导出算法的复杂性。
2019-01-03 cs.FL cs.SE