控制远程调试会话

启动远程会话后,可以在调试服务器或调试客户端中输入命令。 如果有多个客户端,则任何客户端都可以输入命令。 按 Enter 后,命令将传输到调试服务器并执行。

每当一个用户输入命令时,所有用户都会看到命令本身及其输出。 如果此命令是从调试客户端发出的,则所有其他用户都将在命令前面看到一个标识,该标识是哪个用户发出了命令。 从调试服务器发出的命令没有此前缀。

一个用户执行命令后,通过 KD 或 CDB 连接的其他用户将看不到新的命令提示符。 另一方面,WinDbg 的用户将在调试器命令窗口的底部面板中连续看到提示,即使调试器引擎正在运行也是如此。 这两者都不应引起恐慌:任何用户都可以随时输入命令,引擎将按照他们收到的顺序执行这些命令。

通过 WinDbg 接口执行的操作也将由调试服务器执行。

用户之间的通信

每当新的调试客户端连接到会话时,所有其他用户都会看到一条消息,指出此客户端已连接。 客户端断开连接时不显示任何消息。

.clients (列出调试客户端) 命令将列出当前连接到调试会话的所有客户端。

.echo (Echo Comment) 命令可用于将消息从一个用户发送到另一个用户。

WinDbg 工作区

当 WinDbg 用作调试客户端时,其工作区将仅保存通过图形界面设置的值。 不会保存通过“调试器命令”窗口所做的更改。 (这保证仅反映本地客户端所做的更改,因为调试器命令窗口将接受来自所有客户端以及调试服务器的输入。)

文件路径

符号路径、可执行映像路径和扩展 DLL 路径都解释为相对于调试服务器上的 Windows 调试工具安装文件夹的文件路径。

将 WinDbg 用作调试客户端时,它也有其自己的 本地源路径 。 所有与源相关的命令都将访问本地计算机上的源文件。 因此,必须在将使用源命令的任何客户端或服务器上设置正确的路径。

此多路径系统允许调试客户端使用与源相关的命令,而无需实际与其他客户端或服务器共享源文件。 如果有一个用户有权访问的私有或机密源文件,这很有用。

取消调试服务器

.endsrv (End Debugging Server) 命令可用于终止调试服务器。 如果调试器已建立多个调试服务器,则可以取消其中一些服务器,同时让其他服务器保持运行状态。

终止服务器将阻止将来的任何客户端附加到该服务器。 它不会切断当前通过服务器附加的任何客户端。

退出调试器并终止会话

若要退出一个调试客户端而不终止服务器,必须从该特定客户端发出命令。 如果此客户端是 KD 或 CDB,请使用 Ctrl+B 键退出。 如果使用脚本运行 KD 或 CDB,请使用 .remote_exit (退出调试客户端) 。 如果此客户端是 WinDbg,请从“文件”菜单中选择“退出”。

若要终止整个会话并退出调试服务器,请使用 q (Quit) 命令。 可以从任何服务器或客户端输入此命令,它将终止所有用户的整个会话。