WEB开发网
开发学院软件开发Java 使用 CDT 调试器,第 1 部分: 了解 C/C++ 调试器接... 阅读

使用 CDT 调试器,第 1 部分: 了解 C/C++ 调试器接口

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: 当启动调试器时,Eclipse 将检查调试器的 platform 和 cpu 元素是否支持处理环境,使用 CDT 调试器,第 1 部分: 了解 C/C++ 调试器接口(6),如果支持,它将检查以确保当前的启动模式受调试器的 mode 元素支持,目标调用管理器以通知所有侦听器,管理器通过调用每个侦

当启动调试器时,Eclipse 将检查调试器的 platform 和 cpu 元素是否支持处理环境。如果支持,它将检查以确保当前的启动模式受调试器的 mode 元素支持。如果通过所有检查,Eclipse 将查找 class 字段中标识的类。这个类必须实现 ICDIDebugger2 接口,因此必须提供 createSession() 方法的实现。

createSession() 的目标是构建一个可以实现 ICDISession 接口的对象。这个对象使 CDT 能够在运行时访问调试器。这种访问通过一些方法提供,其中最重要的三个方法如下所示:

getSessionProcess() — 返回运行调试器的进程

getTargets() — 返回调试目标数组

getEventManager() — 返回添加和删除事件侦听器的管理器对象

第一种方法十分简单,它将返回与调试器可执行文件相对应的 Process 对象。接下来的两种方法 getTargets() 和 getEventManager() 则较为复杂;本文稍后将介绍这些内容。由于这些方法依赖于调试器可执行文件,而示例插件没有提供这些文件,因此 ExampleDebugger 类将这些方法留空。

目标、事件和 CDI 模型

当 CDT 调用 getTargets() 时,会话必须为每个要调试的进程提供一个 ICDITarget。ICDITarget 的任务是接收调试命令,为调试器转换这些命令,然后发送给调试器。例如,当单击 CDT 调试透视图中的 Step 或 Resume 按钮时,CDT 将分别调用目标的 stepOver() 或 resume() 方法。CDI 对调试器目标接口如何工作没有具体要求,但是第 2 部分将解释 gdb 如何使用 MI 协议与目标交互。

除了向目标发送命令外,ICDITarget 还向任何希望接收调试器输出的对象传输调试器输出。这将通过 CDI 事件完成,这里将使用会话的 getEventManager() 方法。当需要向任何 CDI 对象(例如一个 RegisterView)通知调试器事件时,它将调用 getEventManager() 以访问会话的 ICDIEventManager。然后调用管理器的 addEventListener() 方法,以将该方法添加为侦听器。当调试器生成输出时,目标调用管理器以通知所有侦听器。管理器通过调用每个侦听器的 handleDebugEvents() 方法来完成这个目的,而这个方法必须通过所有 ICDIEventListener 来实现。

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

Tags:使用 CDT 调试器

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