使用 CDT 调试器,第 2 部分: 使用 Eclipse CDT 和 MI 访问 gdb
2009-12-19 00:00:00 来源:WEB开发网-i mi 标志告诉 gdb 使用 MI 协议通信,您可以看到显著的区别。命令名称和输出性质都有了显著改变。输出记录的第一行是 ^running 或 ^done,接下来是结果信息。这个输出被称为结果记录 ,它包括 ^error 和错误消息。
在许多情况下,MI 结果记录之后是 (gdb) 和带外(out-of-band,OOB)记录。这些记录提供目标状态或调试环境的额外信息。-exec-step 后的 *stopped 消息是一个 OOB 记录,它提供关于断点、检查点和目标暂停或结束原因的信息。在先前的会话中,gdb 在每个 -exec-step 后返回 *stopped,reason="end-stepping-range" 和目标状态。
gdb/MI 很难理解,但非常适合软件进程间的通信。CDT 通过创建发送和接收数据的伪终端(pseudo-terminal,pty)来实现通信。然后,它启动 gdb 并创建两个会话对象来管理调试数据。
启动调试器
正如 第 1 部分 中所描述的,当用户单击 Debug 时,CDT 访问 ICDebugger2 实例并调用它来创建 ICDISession。该调试器类必须在扩展 org.eclipse.cdt.debug.core.CDebugger 扩展点的插件中标识出。清单 4 显示了 CDT 中这个扩展的样子。
清单 4. CDT 默认的调试器扩展 <extension point="org.eclipse.cdt.debug.core.CDebugger">
<debugger
class="org.eclipse.cdt.debug.mi.core.GDBCDIDebugger2"
cpu="native"
id="org.eclipse.cdt.debug.mi.core.CDebuggerNew"
modes="run,core,attach"
name="gdb Debugger"
platform="*">
<buildIdPattern
pattern="cdt\.managedbuild\.config\.gnu\..*">
</buildIdPattern>
</debugger>
</extension>
更多精彩
赞助商链接