没有合适的资源?快使用搜索试试~ 我知道了~
通用调试框架TIDE:跨语言环境中的全边缘调试器
理论计算机科学电子笔记141(2005)161-165www.elsevier.com/locate/entcsTIDE:一个通用的数据库框架- 工具演示-范登布兰德1软件工程系Centrum voor Wiskunde enInformaticaKruislaan 413,NL-1098 SJ Amsterdam,TheNetherlands阿姆斯特丹信息技术学院Weesperzijde 190,NL-1097 DZ Amsterdam,荷兰B. Cornelissen2 P.A. 奥利维耶温宿3号软件工程系Centrum voor Wiskunde enInformaticaKruislaan 413,NL-1098 SJ Amsterdam,荷兰摘要语言专用的交互式调试器是我们在任何成熟的编程环境中所期望的工具之一。我们目前的应用程序的TIDE:一个通用的调试框架,是有关的ASF+SDF元环境。TIDE可以应用于语言设计中出现的不同级别的调试。首先,TIDE被用于获得基于术语重写的语言规范的全边缘调试器。其次,TIDE可以针对任何其他编程语言进行实例化,包括但不限于使用ASF+SDF定义和实现的领域特定语言。我们演示了通用调试接口,并指出了实例化基于TIDE的新调试器所需的电子邮件数量。保留字:泛型调试、重写、语言规范1Ema il:Mark.van.den.Br an d@c wi. nl2电子邮件:sgmcorne@science.uva.nl3电子邮件:Jurgen. cwi.nl4电子邮件:pieter@gamesquare.nl1571-0661 © 2005 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.02.056162M.G. J van den Brand等/理论计算机科学电子笔记141(2005)1611介绍由于开发和维护开销,为小型语言(如领域专用语言)开发成熟的编程环境通常是不可行的一个解析器、一个解释器或一个编译器的构造已经包含了大量的编译。ASF+SDF元环境[1]支持在语法和语义层面上对(特定领域)语言进行原型设计。考虑到开发的规范,解析器,解释器和漂亮的打印机等工具是可以衍生的。除了这些工具之外,一个名为TIDE的通用调试框架[4]补充了ASF+SDF元环境,可以轻松获得交互式调试器。请注意,TIDE独立于ASF+SDF元环境,并且可以应用于任何其他(正式)语言的调试在本演示中,我们将介绍此通用调试框架的概念,并演示其在两个调试级别上的用法• 这是一种特定领域语言的规范。• 编译用该领域特定语言编写的程序。1.1ASF+SDF元环境ASF+SDF元环境[1]是一个语言定义和程序操作环境。它可以交互式地用来定义语言,并从这些定义中生成工具。ASF+SDF [3]中的语言规范通常包括语法的定义,漂亮的打印,类型检查和目标语言程序的执行对于这个演示,我们将集中在ASF形式主义。ASF是一种基于条件重写规则的声明式形式主义它是一种一阶强类型语言,提供列表匹配和树遍历机制的功能此外,ASF与SDF密切相关,因为ASF重用SDF部分中定义的语法以获得用户定义的(具体的)语法。1.2潮在为特定语言开发程序时,特定语言的交互式调试器非常有用,但创建它通常需要大量的工作。潮[4]通过提供基于语言独立和可扩展的调试接口的通用调试框架来弥补这一事实。例如,当解释器在程序执行期间与TIDE的接口通信时M.G. J van den Brand等/理论计算机科学电子笔记141(2005)161163调试器给用户。除了用于单步执行程序的工具外,TIDE还提供了设置断点、检查变量和堆栈帧的工具。根据调试的特定语言,TIDE的或多或少的功能都是适用的。1.3为新语言要扩展一种语言的运行时系统,几乎没有什么要求。TIDE使用一个简单的通信协议,该协议由C和Java中可用的库实现。使用这些库,专家应该建立TIDE和语言的运行时系统之间的接口。我们将此接口称为TIDE适配器。以下是他的议程的摘要:• 在单独的进程中启动TIDE,并初始化到TIDE的连接。• 确定逻辑断点,步骤,在调试期间执行可能中断。它们标识执行期间所有可能的断点,这些断点从程序员的角度来看是合乎逻辑的。在传统的调试器中,逻辑断点通常在执行一行代码、一条语句或子表达式的求值之前定义。在每一点上都添加了对TIDE接口的调用• 在这些断点处,必须至少知道当前执行点的源位置,并将其传递到TIDE库。对于更多的特征,嵌套深度(即堆栈深度)和变量环境的串行化表示也可以被传递给TIDE。• 最后,应该定义一些调试规则,说明在哪些逻辑断点上可以进行哪些调试操作。一般规则在初始化时注册到TIDE,在调试期间的任何时候,用户或运行时系统都可以编辑这些规则。完成上述任务后,一个基本的调试接口,可以运行源代码检查,断点,观察点和变量检查设施。更特殊的行为,如语言特殊化,需要在Java中扩展TIDE的实现。许多接口和抽象类可用于将新组件集成到TIDE中。TIDE协议确保调试不限于单线程应用程序。即使是异构、并行和分布式应用程序也可以与单个TIDE服务器通信,允许用户同时调试通信进程。唯一的要求是所有源代码必须在本地可用。164M.G. J van den Brand等/理论计算机科学电子笔记141(2005)161Fig. 1. 运行TIDE的ASF+SDF元环境的主用户界面。2TIDE调试器演示2.1语言规范ASF用于通过条件方程定义(编程)语言的语义。这些方程既可以直接解释,也可以编译成高效的C代码[2]。在调试模式下,ASF解释器使用上述适配器API与TIDE图1显示了ASF+SDF Meta- Environment的用户界面的屏幕截图,其中集成了TIDE小部件。正在调试的规范是玩具编程语言Pico的类型检查器。用户在模块Pico-typecheck.asf中的第24行添加了一个断点,并检查了变量Id和Exp。ASF解释器在解释规范时定义了21个逻辑断点。例如,两个断点在逻辑上标识重写规则应用:一个在匹配左侧之前,另一个刚好在构造右侧之前。ASF值环境到TIDE的编组在350行C代码中实现。这就足以获得一个完整的ASF调试器.M.G. J van den Brand等/理论计算机科学电子笔记141(2005)1611652.2用领域特定语言当一种语言已经用ASF+SDF定义时,应该不难获得这种语言的基于TIDE的调试器。我们提供了一个通用的ASF+SDF模块,用于封装和隐藏TIDE适配器API。现在,我们可以通过在任何语言规范中添加对该模块的调用来检测ASF+SDF规范。例如,Pico的语言规范通过调用tide-step函数进行了扩展,获得了一个支持单步执行Pico程序和设置断点的调试器。当然,这种方法并不妨碍通过手工编写TIDE适配器获得的完整表达能力。实际上,所提供的接口是抽象的,但功能性很强。ASF+SDF调试模块的设计是在自动化(为用户编写更少的代码)和表达性(为用户编写更多的代码)之间的权衡。顺便说一下,我们想指出吴等人的工作。是高度相关的。它使用Eclipse框架为特定领域的语言提供调试器。3结论TIDE提供了一个灵活的交互式调试框架,允许快速开发任何语言的调试器。我们展示了ASF形式化的调试器,以及如何使用ASF+SDF从语言规范自动获得基于TIDE的调试器。未来的工作包括开发更多的TIDE适配器:例如,用于语法和从语法生成的解析器,用于一些通用语言(C和Java),以及用于几种特定领域的语言。引用[1] M.G.J. van den Brand,A.作者声明:J. de Jong,M. de Jonge,T. 凯珀斯,克林特湖Moonen,P. A.放大图片作者:J. Visser和J. Visser。ASF+SDF元环境:一个基于语法的语言开发环境。在R. Wilhelm,编辑,CCSpringer-Verlag,2001.[2] M.G.J. van den Brand、J. Heering、P. Klint和P.A.奥利维尔 编译语言定义:asf+sdf编译器。ACM Transactions on Programming Languages and Systems,24(4):334[3] A. van Deursen , J. Heering , and P. Klint , editors. Language Prototyping : An AlgebraicSpecification Approach,AMAST Series in Computing第5卷。世界科学,1996年。[4] P. A. 奥利维尔一个异构应用的架构。阿姆斯特丹大学博士论文,2000年。[5] H. Wu J. Gray S. Roychoudhury 和 M. 莫 尼 克 将 调 试 方 面 编 织 到 特 定 领 域 的 语 言 语 法 中 。ACMSymposium for Applied Computing(SAC),2005年3月。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多功能HTML网站模板:手机电脑适配与前端源码
- echarts实战:构建多组与堆叠条形图可视化模板
- openEuler 22.03 LTS专用openssh rpm包安装指南
- H992响应式前端网页模板源码包
- Golang标准库深度解析与实践方案
- C语言版本gRPC框架支持多语言开发教程
- H397响应式前端网站模板源码下载
- 资产配置方案:优化资源与风险管理的关键计划
- PHP宾馆管理系统(毕设)完整项目源码下载
- 中小企业电子发票应用与管理解决方案
- 多设备自适应网页源码模板下载
- 移动端H5模板源码,自适应响应式网页设计
- 探索轻量级可定制软件框架及其Http服务器特性
- Python网站爬虫代码资源压缩包
- iOS App唯一标识符获取方案的策略与实施
- 百度地图SDK2.7开发的找厕所应用源代码分享
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功