Debugging Tools for Windows

控制远程调试会话

当远程会话开始之后,调试服务器和调试客户端都可以输入命令。如果有多个客户端,他们也都可以输入命令。当按下ENTER时,命令会传输到调试服务器并执行。

当用户输入命令后,所有用户都会看到命令输出。如果是从调试客户端输入的命令,所有其他用户都会看到一个标识表明是谁使用了该命令。在调试服务器上输入的命令不会有这个前缀。

某个用户执行了一条命令之后,其他通过KD或CDB连接的用户看不到新的命令提示符。另一方面,WinDbg用户会一直看到调试器命令窗口底部面板的提示符,即使调试器引擎正在运行。遇到这样的问题都不用在意,任何用户在任何时候都可以输入命令,引擎会按照接收道命令的顺序来执行。

通过WinDbg界面进行的操作也会在调试服务器中被执行。

用户之间的通信

每当有新的调试客户端连接到会话中,所有其他用户都会看到该客户端连接的信息。一个客户端断开连接不会显示信息。

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

.echo (Echo Comment)命令在一个用户发送信息到另一个用户时很有用。

WinDbg 工作空间

当WinDbg用作调试客户端时,它的工作空间只保存通过图形界面设置的值。通过调试器命令窗口进行的改变不会保存。 (这保证了只有本地客户端进行的改变会被体现出来,因为调试器命令窗口和调试服务器一样接收来自所有客户端的输入。)

文件路径

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

当WinDbg作为调试客户端时,它也拥有自己的本地源码路径(local source)。所有源码相关的命令都访问本地计算机上的源码文件。因此,任何需要使用源码命令的客户端和服务器上都必须设置适合的路径。

查看设置路径和加载文件获取关于这些路径的详细信息。

这种多路径系统使得调试客户端可以使用源码相关的命令而不需要和其他客户端或服务器实际共享源文件。这在某个用户需要访问私有或机密代码时很有用。

删除调试服务器

.endsrv (End Debugging Server)命令可以用来终止一个调试服务器。如果有多个调试服务器,可以停止一些并保留另外一些。

终止一个服务器可以避免之后的任何客户端附加到它上面。这样不会中断当前已连接到该服务器的客户端。

退出调试器和终止会话

要退出一个调试客户端而不终止服务器,必须在该客户端上执行一条命令。如果客户端是KD或CDB,使用CTRL+B键退出。如果用脚本来运行KD或CDB,使用.remote_exit (Exit Debugging Client)。如果客户端是WinDbg,选择File 菜单的Exit 来退出。

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

Build machine: CAPEBUILD