NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----27

 

cc682/NetRoc

http://netroc682.spaces.live.com/

通过Remote.exe的远程调试

通过remote.exe进行的远程调试包括在远程计算机上运行调试器和在本地计算机上运行的remote.exe工具。

远程计算机必须运行在Windows 2000和之后的系统中调试器才能正常工作。本地计算机可以运行任何Windows操作系统。

注意  由于remote.exe只能和控制台应用程序一起工作,所以不能用于控制WinDbg。

本节包含:

Remote.exe 实用程序

开始Remote.exe会话

Remote.exe批处理文件

Remote.exe实用程序

remote.exe三实用程序是一个用于在远程计算机上运行命令行程序的服务器/客户端通用工具。

Remote.exe 依靠命名管道,为以STDIN和STDOUT作为输入输出的程序提供远程网络访问。用户在网络中的另一台计算机上,或者通过直接拨号调制解调器连接,可以查看远程会话或输入命令。

该使用程序有很多使用方法。例如,在开发软件时,可以使用远程计算机的处理器和资源来编译代码,而在本机上进行其他工作。也可以通过remote.exe来为一个需要多台计算机的特殊任务分发处理需求。

注意remote.exe没有安全认证,允许任何运行remote.exe客户端的人连接到remote.exe服务器上。这使得运行Remote.exe服务器的机器帐号对任何连接过来的人都是开放的。

开始Remote.exe会话

有两种方法可以用来和KD、CDB一起启动remote.exe会话。只有第二种方法可以被NTSD使用。

自定义命令提示符窗口

Remote.exe客户端和Remote.exe服务器运行在命令提示符窗口中。

要准备好使用远程会话,需要自定义该窗口来增强可用性。打开一个命令提示符窗口。在标题栏右键点击并选择属性(Properties)。选择布局(Layout)选项卡。在"屏幕缓冲区大小"("Screen Buffer Size")中的宽度(Width)中填入90,在高度(Height)中填入40009000的值。这样会启用内核调试器的远程会话的滚动条。

如果要改变命令提示符窗口的大小,可以改变"窗口大小" ("Windows Size")中的高度和宽度。选择选项(Options)选项卡,启用编辑选项(Edit Options)中的快速编辑模式和插入模式。这使得可以在命令提示会话中剪切和粘贴信息。点击确定(OK)来应用这些修改。选择这些选项以在以后的所有提示符会话中使用。

启动Remote.exe服务器:第一种方法

启动Remote.exe服务器的常规语法如下:

remote /s "Command_Line" Unique_Id [/f Foreground_Color] [/b Background_Color

使用和下面例子同样的方式来在远程计算机上启动KD或CDB:

remote /s "KD [options]" MyBrokenBox 

remote /s "CDB [options]" MyBrokenApp 

这样会在命令提示符窗口中启动Remote.exe服务器,并启动调试器。

可以用该方法来直接启动NTSD,因为NTSD的进程运行在另一个不同的窗口中。

启动Remote.exe服务器:第二种方法

还有另外一种用于启动Remote.exe服务器的方法。该方法先启动调试器,然后再使用.remote (Create Remote.exe Server) 命令启动服务器。

由于.remote 命令在调试器启动之后才输入,所以该方法在KD、CDB和NTSD上的使用是相同的。

这里是一个例子。首先用常规方式启动调试器:

KD [options

调试器运行起来之后,使用.remote命令:

.remote MyBrokenBox 

这样也会创建ID为"MyBrokenBox"的Remote.exe服务器,和使用第一种方法的结果一样。

这种方法的一个好处是不用预先决定是否使用远程调试。当使用控制台调试器进行调试时决定让位于其他地方的人来接管调试,可以用.remote命令来让他们连接到会话上。

启动Remote.exe客户端

启动Remote.exe客户端的常规语法如下:

remote /c ServerNetBIOSName Unique_ID [/l Lines_to_Get] [/f Foreground_Color] [/b Background_Color

例如,如果前面描述过的"MyBrokenBox" 会话在网络名为"Server2"的本地主机上已经启动起来,就可以使用该命令连接到它:

remote /c server2 MyBrokenBox 

网络上任何具有适当权限的人都可以连接到该调试会话上,只要他们知道机器名和会话ID。

输入命令

通过Remote.exe客户端输入的命令会传输到Remote.exe服务器。可以在客户端输入任何命令,如同直接在调试器中输入一样。

在Remote.exe客户端上退出remote.exe会话,输入@Q 命令。这会让Remote.exe服务器和调试器继续运行。

在Remote.exe服务器上输入@K 命令结束服务器会话。

Remote.exe 批处理文件

作为更详细一些的通过remote.exe进行远程调试的例子,下面假设一次三机内核调试中的一台本地主机的情形:

  • 调试需要通过COM2上的mull-modem电缆进行。
  • 符号文件在c:\winnt\symbols文件夹下。
  • c:\temp 下面创建了一个名为debug.log的日志文件。

日志文件中包含了调试会话中能在调试器屏幕中看到的所有内容。所有调试人员的输入和目标系统的内核调试器的输出都会记入日志文件。

在本地主机上用于运行一个调试会话的简单批处理文件如下:

set _NT_DEBUG_PORT=com2
set _NT_DEBUG_BAUD_RATE=19200
set _NT_SYMBOL_PATH=c:\winnt\symbols
set _NT_LOG_FILE_OPEN=c:\temp\debug.log
remote /s "KD -v" debug

注意  如果该批处理文件和Remote.exe不在同一个目录下,并且Remote.exe不在系统路径列出的目录中,批处理中需要指定Remote.exe的全路径。

该批处理文件运行后,任何连接到该本地主机的网络的Windows计算机都可以使用下面的命令连接到调试会话:

remote /c computername debug 

computername 是本地主机的NetBIOS名。

posted on 2008-05-13 16:53 NetRoc 阅读(328) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜