客户端对象

几乎所有与 调试器引擎 的交互都通过 客户端对象(通常称为 客户端)。 每个客户端都提供顶级引擎接口的实现。 每个接口提供了一组不同的方法,这些方法可用于与引擎交互,并通过引擎来与目标进行交互。 引擎的一个实例可以有多个客户端,每个客户端都有自己的状态。

主要客户端

主客户端是已加入当前调试会话的客户端。 最初,创建新客户端对象时,它不是主客户端。 当客户端用于获取目标(例如通过调用 CreateProcess2)或使用 ConnectSession 连接到调试会话时,客户端将成为主客户端。 调试器命令 .clients 仅列出主要客户端。

回调对象

回调对象可以注册到每个客户端。 有三种类型的回调对象:

  1. 输入回调对象 (或 输入回调):引擎调用输入回调来请求输入。 例如,具有控制台窗口的调试器可以注册输入回调,以向用户提供输入,或者调试器可能会注册输入回调,以便向引擎提供文件中的输入。

  2. 输出回调对象 (或 输出回调):引擎调用输出回调以显示输出。 例如,具有控制台窗口的调试器可以注册输出回调,以向用户显示调试器的输出,或者调试器可能会注册输出回调以将输出发送到日志文件。

  3. 事件回调对象 (或 事件回调):每当目标中发生事件时,引擎就会调用事件回调(或引擎状态发生更改)。 例如,调试器扩展库可以注册事件回调来监视某些事件或在发生特定事件时执行自动作。

远程调试

客户端对象有助于与主机引擎的远程实例通信。 DebugConnect 函数创建连接到远程引擎实例的客户端对象;在此客户端上调用的方法由远程引擎执行,在远程引擎进行回调调用时,将在客户端本地注册的回调对象调用。

其他信息

有关创建和使用客户端对象的详细信息,请参阅 “使用回调对象”。 有关注册回调对象的详细信息,请参阅“使用回调对象”。