WEB开发网
开发学院软件开发Java 使用 CDT 调试器,第 2 部分: 使用 Eclipse CDT 和... 阅读

使用 CDT 调试器,第 2 部分: 使用 Eclipse CDT 和 MI 访问 gdb

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: CDI 和 Eclipse 调试模型对于与 Eclipse 调试视图(比如 Register View 和 Variable View)交互的调试插件,您必须遵守 Eclipse 的规则:必须使用从 Eclipse 调试平台获得的事件和元素,使用 CDT 调试器,第 2 部分: 使用 Eclip

CDI 和 Eclipse 调试模型

对于与 Eclipse 调试视图(比如 Register View 和 Variable View)交互的调试插件,您必须遵守 Eclipse 的规则:必须使用从 Eclipse 调试平台获得的事件和元素。Eclipse 调试模型的根元素是一个 IDebugTarget,其它元素包括 IVariable、IExpression 和 IThread。这些名称很相似,是因为 CDI 模型层次结构是在 Eclipse 调试模型层次结构之后构造的。但 CDI 模型与 Eclipse 调试模型之间不能直接对话。

鉴于这个原因,CDT 包含一组类,将 CDI 类封装起来,从而将 CDI 模型和 Eclipse 调试模型联系起来。CDebugTarget 是这个包装器模型层次结构的根,它侦听由 CDI EventManager 触发的事件。当它接收到新事件时,CDebugTarget 处理大量的 if 和 switch 语句来决定如何响应。例如,如果 CDI 事件是 ICDIResumedEvent,CDebugTarget 将执行清单 5 中的代码。


清单 5. 将 CDI 事件转换为 DebugEvents
switch( event.getType() ) { 
 case ICDIResumedEvent.CONTINUE: 
 detail = DebugEvent.CLIENT_REQUEST; 
 break; 
 case ICDIResumedEvent.STEP_INTO: 
 case ICDIResumedEvent.STEP_INTO_INSTRUCTION: 
 detail = DebugEvent.STEP_INTO; 
 break; 
 case ICDIResumedEvent.STEP_OVER: 
 case ICDIResumedEvent.STEP_OVER_INSTRUCTION: 
 detail = DebugEvent.STEP_OVER; 
 break; 
 case ICDIResumedEvent.STEP_RETURN: 
 detail = DebugEvent.STEP_RETURN; 
 break; 
} 

CDebugTarget 通过创建 DebugEvents 来响应 CDI 事件,这个过程通常涉及单步调试、中断、重新执行。创建这些事件后,它访问 Eclipse DebugPlugin 并调用 fireDebugEventSet 方法。这通知所有 Eclipse 调试侦听器状态发生了改变。即所有将其自身作为 DebugEventListener 添加的对象接收到 DebugEvent。这包括 Eclipse 调试视图,比如 Memory View 和 Variables View。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 CDT 调试器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接