基于Eclipse的开发环境中调试器设计与实现
断点管理器(IBreakpoint Manager)是在工作空间中的断点集合。当断点创建时,会在管理器中注册。当断点被删除,它也会在管理器中移除,当断点添加,移除,以及断点属性改变时,提供更改通知。客户端需要实现IBreakpointsListener以及在断点管理器中注册。例如:调试目标侦听更改通知,因此当它们改变时,可以安装、移除、更新断点信息。客户端也需要实现IBreak-pointManaagerListener,以便实现当断点管理器被使能或禁止时的通知侦听,也可以允许所有的断点被暂时禁止,而不用改变单个断点的状态。
当建立了调试目标之后,应该搜索断点管理器,查找存在的断点,并安装这些断点。调试目标应该在其生命周期中侦听断点的添加、移除、改变等信息,并且能够更新这些信息。
在编辑器中显示了断点和观察点的位置。编辑器在竖直条中显示标记,当标记改变时更新。继承AbstractDecoratedTextEditor的编辑器会有一个竖直标记条,用于显示和正在编辑的文件有关的标记。在竖直标记条中双击,可能会产生多于一种的操作,可以设置行断点或者设置观察点。在编辑器竖直标记条中添加双击动作,可以应用工作台扩展点来添加编辑器操作。参考AbstractRulerActionDelegate给期望的工作添加操作,可通过扩展点editorActions予以添加。断点的模型如图3所示。本文引用地址:https://www.eepw.com.cn/article/152476.htm
2.2 命令处理
命令处理包括单步进入、单步跳过、返回、悬挂、恢复、下载、运行、继续运行、终止等。平台提供标准模式的命令处理的实现。
所有的命令处理需要实现接口IDeblugCom-mandHandler,并且实现如下函数:
canExecute(IEnabledStateRequest request)
execute(IDebugCommandRequest request)
标准模式可以重载平台的实现,定制模式需要自己提供一个实现,包括提供作为适配器的处理类,可以直接实现处理接口。
平台所定义的处理者进程为如下几个:
IDisconnectHandler
IDroDToFrameHandler
IResumeHandler
IStepFiltersHandler
IStepIntoHandler
IStepOvetHandler
IStepReturnHandler
ISuspendHandler
ITerminateHandler
处理者和命令处理之间的交互是异步的。需要先更新使能状态,然后开始执行。传递到命令处理的是一个IRequest对象,实现接收状态,允许取消,当请求结束时通知等功能。
命令执行的过程如图4所示。
平台提供的命令处理应用JOB来实现异步交互。命令处理为每一个请求和返回维护一个JOB的进度表,并且JOB是异步运行的。
2.3 视图内容
利用平台提供的tree视图的实现变量、寄存器的查看,并用内容提供者和标签提供者来支持定制异步内容。这个tree视图的实现基于JFace的tree视图,并实现了接口ILazyTreePathContentProvider。这个视图不能被继承,但是可以被初始化。
一些调试视图定义了很多列。像变量视图,寄存器视图,都分别有名字列,值列等。调试模型提供要显示的列,以及元编辑器对某一个值进行编辑,还为每一个列提供标签。视图、列、元编辑器之间的关系如图5所示。列表述定义了要显示的列,包括列头、列图像、列标识。允许提供多个列,在初始化时显示其中的几列,用户可以选择显示哪些列。
评论