首页> 外文OA文献 >Defusing the Debugging Scandal - Dedicated Debugging Technologies for Advanced Dispatching Languages
【2h】

Defusing the Debugging Scandal - Dedicated Debugging Technologies for Advanced Dispatching Languages

机译:化解调试丑闻-用于高级分派语言的专用调试技术

代理获取
本网站仅为用户提供外文OA文献查询和代理获取服务,本网站没有原文。下单后我们将采用程序或人工为您竭诚获取高质量的原文,但由于OA文献来源多样且变更频繁,仍可能出现获取不到、文献不完整或与标题不符等情况,如果获取不到我们将提供退款服务。请知悉。

摘要

To increase program modularity, new programming paradigms, such as aspect-oriented programming, context-oriented programming, and predicated dispatching, have been researched in recent years. The new-paradigm languages allow changing behavior according to various kinds of contexts at the call sites. A recent statistics shows that at least 66\% of skilled engineers world-wide, courses and third party vendors are using languages that support AOP features. Many well-known companies are using these languages in product developments. In our research, we classified these new languages as advanced-dispatching languages. Advanced-dispatching languages are usually implemented as an extension of main-stream languages. After compilation, their programs are transformed to the compiled form of the main-stream language. Due to this compilation mechanism, the information, especially features that are specific to the advanced-dispatching languages, existing in the source code cannot be fully restored during debugging. The information loss increases the effort of comprehending advanced-dispatching programs and fixing advanced-dispatching-specific defects. In this thesis, we performed four works to improve the comprehensibility of debugging information from three debugging techniques --- interactive debugging, trace-based debugging, and slicing. We first performed research on the most common debugging technique---interactive debugging. Due to the availability of existing fault models, we proposed a generalized fault model based on four aspect-oriented-specific fault models. The generalized fault model consists of seven fault types and we found a likely pattern for fixing a defect corresponding to each type. Then, we analysed the pattern description and extracted eleven atomic advanced-dispatching-specific debugging tasks. To support the tasks, we modified an existing compiler to keep aspect-oriented information after the compilation, built a dedicated advanced dispatching debugging model, and implemented graphical user interfaces. In addition to the form of debugging information, we analysed the problem where and when the program should be suspended. In interactive debugging, breakpoints are essential to determine the suspending places. For fixing a specific defect, breakpoints are logically related. However, existing debuggers do not support to build logic between breakpoints. Therefore, programmers have to manually perform some repeated tasks. In this thesis, we analysed five common debugging scenarios that require multiple breakpoints. Targeting the investigated scenarios, we designed and implemented a breakpoint language that uses pointcuts to select suspension times in the program. In our language, an expected suspension can be expressively programmed and reached with less or even no irrelevant suspensions. Though the interactive debugging is the most commonly used debugging technique, it becomes handicapped in cases that the observed failure is far away from the defect. Locating the defect is typically a backtracking process through the execution history. However, interactive debugging is performed along with the program execution and cannot restore a past state. Trace-based debugger records events at runtime and supports inspection offline. Existing researches on trace-based debugging for advanced-dispatching languages are limited. We proposed a dedicated trace-based debugger with an user interface that allow programmers to navigate and query the recorded trace. Automation is what software aims for. Slicing is a debugging technique which automatically selects program statements that can influence the failure. It is performed on dependency graphs that contain the inter-relationships between program statements, such as control dependencies, call dependencies. We discussed how three aspect-oriented-specific constructs, which are join point shadows, program compositions, and non-argument context values, can influence the execution of aspect-oriented programs. Considering the three constructs, we developed dependency graphs that are dedicated to aspect-oriented programs, as well as a slicing algorithm that is performed on the developed dependency graphs. We showed that our approach can be applied efficiently for small projects and is able to select all relevant source code. The three debugging techniques analysed in this thesis fully cover phases before, during and after the program execution. For each technique, we have provided a debugging model that explicitly models advanced-dispatching concepts. The generated debugging information is in terms of advanced-dispatching abstractions. Thus, the comprehensibility of debugging advanced-dispatching programs is increased.
机译:为了增加程序模块化,近年来已经研究了新的编程范例,例如面向方面的编程,面向上下文的编程和谓词调度。新范式语言允许根据呼叫现场的各种上下文来更改行为。最近的统计数据表明,全球至少66%的熟练工程师,课程和第三方供应商正在使用支持AOP功能的语言。许多知名公司在产品开发中都使用这些语言。在我们的研究中,我们将这些新语言归为高级调度语言。高级调度语言通常被实现为主流语言的扩展。编译后,其程序将转换为主流语言的已编译形式。由于存在这种编译机制,因此在调试过程中无法完全还原源代码中存在的信息,尤其是高级调度语言特有的功能。信息丢失增加了理解高级调度程序和修复特定于高级调度的缺陷的工作量。本文通过交互调试,基于跟踪的调试和切片这三种调试技术,完成了四项工作,以提高调试信息的可理解性。我们首先对最常见的调试技术-交互式调试进行了研究。由于现有故障模型的可用性,我们提出了基于四个面向方面的特定故障模型的广义故障模型。广义故障模型由七种故障类型组成,我们发现了一种可能的模式来修复与每种类型相对应的缺陷。然后,我们分析了模式描述,并提取了11个特定于原子的高级调度的调试任务。为了支持这些任务,我们修改了现有的编译器,以在编译后保留面向方面的信息,构建了专用的高级调度调试模型,并实现了图形用户界面。除了调试信息的形式外,我们还分析了应在何时何地暂停程序的问题。在交互式调试中,断点对于确定挂起位置至关重要。为了修复特定的缺陷,断点在逻辑上是相关的。但是,现有的调试器不支持在断点之间构建逻辑。因此,程序员必须手动执行一些重复的任务。在本文中,我们分析了五个需要多个断点的常见调试方案。针对所研究的场景,我们设计并实现了一种断点语言,该断点语言使用切入点在程序中选择暂停时间。用我们的语言,可以通过减少或什至没有无关紧要的暂停来表达预期的暂停。尽管交互式调试是最常用的调试技术,但是在观察到的故障距离缺陷很远的情况下,交互式调试会变得很困难。查找缺陷通常是执行历史中的回溯过程。但是,交互式调试是与程序执行一起执行的,无法恢复过去的状态。基于跟踪的调试器在运行时记录事件,并支持脱机检查。现有的有关高级调度语言的基于跟踪的调试的研究是有限的。我们提出了一种基于跟踪的专用调试器,该调试器具有一个用户界面,允许程序员导航和查询记录的跟踪。自动化是软件的目标。切片是一种调试技术,可自动选择可能影响故障的程序语句。它在包含程序语句之间的相互关系的依赖关系图上执行,例如控件依赖关系,调用依赖关系。我们讨论了三种面向方面的特定构造,即连接点阴影,程序组成和非参数上下文值如何影响面向方面的程序的执行。考虑到这三种构造,我们开发了专用于面向方面的程序的依赖图,以及在所开发的依赖图上执行的切片算法。我们证明了我们的方法可以有效地应用于小型项目,并且能够选择所有相关的源代码。本文分析的三种调试技术完全涵盖了程序执行之前,期间和之后的阶段。对于每种技术,我们都提供了一个调试模型,该模型可以显式地对高级调度概念进行建模。生成的调试信息依据高级调度抽象。因此,增加了调试高级调度程序的可理解性。

著录项

  • 作者

    Yin, Haihan;

  • 作者单位
  • 年度 2013
  • 总页数
  • 原文格式 PDF
  • 正文语种 und
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号