客户端对象

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

主客户端

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

回调对象

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

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

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

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

远程调试

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

其他信息

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