首页> 外文期刊>Software >A system for debugging via online tracing and dynamic slicing
【24h】

A system for debugging via online tracing and dynamic slicing

机译:通过在线跟踪和动态切片进行调试的系统

获取原文
获取原文并翻译 | 示例
       

摘要

Dynamic slicing is a promising trace based technique that helps programmers in the process of debugging. In order to debug a failed run, dynamic slicing requires the dynamic dependence graph (DDG) information for that particular run. The two major challenges involved in utilizing dynamic slicing as a debugging technique are the efficient computation of the DDG and the efficient computation of the dynamic slice, given the DDG. In this paper, we present an efficient debugger, which first computes the DDG efficiently while the program is executing; dynamic slicing is later performed efficiently on the computed DDG, on demand. To minimize program slowdown during the online computation of DDG, we make the design decision of not outputting the computed dependencies to a file, instead, storing them in memory in a specially allocated fixed size circular buffer. The size of the buffer limits the length of the execution history that can be stored. To maximize the execution history that can be maintained, we introduce optimizations to eliminate the storage of most of the generated dependencies, at the same time ensuring that those that are stored are sufficient to capture the bug. Experiments conducted on CPU-intensive programs show that our optimizations are able to reduce the trace rate from 16 to 0.8 bytes per executed instruction. This enables us to store the dependence trace history for a window of 20 million executed instructions in a 16-MB buffer. Our debugger is also very efficient, yielding slicing times of around a second, and only slowing down the execution of the program by a factor of 19 during the online tracing step. Using recently proposed architectural support for monitoring, we are also able to handle multithreaded programs running on multicore processors.
机译:动态切片是一种很有前途的基于跟踪的技术,可帮助程序员进行调试。为了调试失败的运行,动态切片需要该特定运行的动态依赖图(DDG)信息。使用动态切片作为调试技术涉及的两个主要挑战是DDG的有效计算和给定DDG的动态切片的有效计算。在本文中,我们提供了一种高效的调试器,该调试器首先在程序执行时高效地计算DDG;然后,在调试器中运行DDG。动态切片随后可根据需要在计算出的DDG上高效执行。为了使DDG在线计算过程中的程序速度减至最小,我们做出了以下设计决策:不将计算出的依赖项输出到文件中,而是将它们存储在内存中的一个特别分配的固定大小的循环缓冲区中。缓冲区的大小限制了可以存储的执行历史记录的长度。为了最大化可维护的执行历史记录,我们引入了优化措施,以消除大多数生成的依赖项的存储,同时确保所存储的依赖项足以捕获错误。在CPU密集型程序上进行的实验表明,我们的优化能够将每条执行指令的跟踪率从16个字节降低到0.8个字节。这使我们能够在16 MB的缓冲区中存储2000万条已执行指令的窗口的依赖性跟踪历史记录。我们的调试器也非常高效,可产生约一秒钟的切片时间,并且在联机跟踪步骤中只会使程序的执行速度降低19倍。使用最近提出的用于监视的体系结构支持,我们还能够处理在多核处理器上运行的多线程程序。

著录项

  • 来源
    《Software》 |2012年第8期|p.995-1014|共20页
  • 作者单位

    School of Informatics, University of Edinburgh, Edinburgh, EH8 9AB, UK;

    School of Informatics, University of Edinburgh, Edinburgh, EH8 9AB, UK;

    Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA;

    Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA;

  • 收录信息 美国《科学引文索引》(SCI);美国《工程索引》(EI);
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

    dynamic slicing; debugger; dynamic dependence graph; tracing;

    机译:动态切片调试器;动态依赖图追踪;
  • 入库时间 2022-08-17 13:03:48

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号