cc682/NetRoc
http://netroc682.spaces.live.com/
内核模式设置
本节包含以下主题:
内核调试的硬件配置
目标机的软件配置
主控机的软件配置
内核调试的硬件配置
本节包含以下主题:
目标机和主控机
设置Null-Modem电缆连接
设置1394电缆连接
设置USB2.0调试电缆连接
测试连接
目标机和主控机
内核模式调试需要一台目标机 和一台主控机。目标机用于运行内核模式程序,主控机用于运行调试器。
下图显示了用于进行内核调试和系统故障诊断的典型配置。
典型的Windows调试配置
上图显示了典型的配置。但是,当前版本的KD和WinDbg(和本文档一同安装的)是很灵活的。KD和WinDbg可以做以下一些事情。
- 调试运行Windows NT 4.0、Windows 2000或更迟版本Windows的目标机。
- 调试运行于基于x86、Itanium、x64的目标机。
- 可以在运行Windows NT 4.0、Windows 2000或更迟版本Windows的主控上启动。
- 可以在基于x86、Itanium、x64的主控机上启动。
目标机和主控机不需要运行在相同的平台和相同版本Windows上。
内核调试没有规定使用发布版或者调试版的固体组合。可以在发布版系统上调试发布版或者调试版系统,也可以从发布版或者调试版系统上调试发布版的系统。然而,一般在主控机上没有理由使用速度较慢的调试版系统。
注意 如果在Itanium平台的主控机上运行调试器,要确认使用正确版本的可执行文件。关于选择使用哪个版本的调试器包,查看选择32位或64位调试器包。
设置Null-Modem电缆连接
当主控机和目标机在同一个地方,或者在目标机和远程的主控机之间必须放置一台带有远程访问服务器功能(RAS)的主机时,必须使用调试(null-modem)电缆、IEEE 1394 ("火线") 电缆,或者 USB 2.0 调试电缆来连接两台机器。
Null-modem 电缆 是配置来用于两个串口之间传输数据的串行电缆。它们在大多电脑商店都能够买到(不要听文档的话,事实是,在国内我从来没在电脑城买到过能用的null-modem线,使用的全部是自己焊的)。注意不要被标准的串口电缆混淆了,标准串行电缆并不是用来连接两个串口的。
如果是通过电话线访问目标机的modem,或者在同一台机器上调试出错的用户模式进程,又或者分析dump文件,则不需要使用null-modem电缆。
COM端口
目标机上默认用于调试输出的是排位最高的端口(一般是COM2)。可以通过设置debugport 启动选项来修改默认端口。要获取更多关于改变端口的信息,查看目标机的软件配置。
注意 目标机的配置方式在Windows Vista中有所更改。获取更多信息,查看启用调试的启动参数。
主控机上用于接收调试信息的默认端口是COM1,可以通过设置_NT_DEBUG_PORT 环境变量来修改。查看更多关于修改环境变量的信息,查看主控机的软件配置。
Null-Modem 电缆的构造
如果没有null-modem电缆,或者你更愿意自己定制你的硬件配线,参考下面的信息。
一根标准的,商业上可用的null-modem电缆具有如下配置:
- 信号输出连接信号输入
- 信号输入连接信号输出
- 地线连接地线
对于9针和25针D-微型连接器(分别俗称db9和db25),硬件协议规定电缆必须如下连接:
- 信号输入(RXD) 连接 信号输出 (TXD)
- TXD to RXD
- 地线 (GND) 连接 GND.
另外,每一边的电缆都需要将数据准备就绪(DTR)连接数据输入准备(DSR),发送请求(RTS)连接清除发送(CTS)。
以下一些针脚需要连在一起
9-针连接器
|
25-针连接器
|
2 (RXD)
|
2 (TXD)
|
3 (TXD)
|
3 (RXD)
|
4 (DTR)
|
6 (DSR)
|
5 (GND)
|
7 (GND)
|
6 (DSR)
|
20 (DTR)
|
7 (RTS)
|
5 (CTS)
|
8 (CTS)
|
4 (RTS)
|
主控机上的调试器并不依赖任何控制脚(例如DTR, DSR, RTS,,或者 CTS)。但是,可能需要在电缆两端连接器设置两跳线,从DTR到DSR,以及从RTS到CTS。如下:
连接器
|
跳线
|
db9
|
从4针(DTR)到6针(DST)
从7针(RTS)到8针(CTS)
|
db25
|
从20针(DTR)到6针(DSR)
从5针(RTS)到4针(CTS)
|
用null-modem将主控机和目标机连接在一起。
软件设置
更多关于在目标机上配置启动选项的信息,查看启用调试的启动参数。更多关于如何启动调试任务的信息,查看 附加到目标机(内核模式)。
设置1394电缆连接
当主控机和目标机在同一个地方,或者在目标机和远程的主控机之间必须放置一台带有远程访问服务器功能(RAS)的主机时,必须使用调试(null-modem)电缆、IEEE 1394 ("火线") 电缆,或者 USB 2.0 调试电缆来连接两台机器。
通过1394电缆进行的内核调试并不是在所有系统上都被支持。目标机和主控机必须运行Microsoft Windows XP或者更迟版本的Windows。 (目标机和主控机不需要运行相同版本Windows。)
目标机和主控机都必须具有1394控制器。将1394电缆分别连接到两台机器的任意端口上。端口的选择并不重要,而且不会影响软件配置中使用的频道号。
软件配置
更多关于在目标机上配置启动选项的信息,查看启用调试的启动参数。更多关于如何启动调试任务的信息,查看 附加到目标机(内核模式)。
注意 在使用1394电缆进行内核调试之前,必须对两台机器进行更多软件配置。关于这些配置的详细信息,查看禁用1394控制器和安装1394虚拟驱动程序。
设置USB 2.0 调试电缆连接
当主控机和目标机在同一个地方,或者在目标机和远程的主控机之间必须放置一台带有远程访问服务器功能(RAS)的主机时,必须使用调试(null-modem)电缆、IEEE 1394 ("火线") 电缆,或者 USB 2.0 调试电缆来连接两台机器。
通过USB 2.0调试电缆进行的内核调试并不是在所有系统上都被支持。目标机必须运行Windows Vista或更迟版本的Windows,主控机必须运行Windows 2000或者更迟版本。
进行这种调试,必须使用如下硬件:
- 一根USB 2.0 调试电缆。这种电缆并不是标准的USB 2.0 电缆,因为他有一些另外的硬件部件用于兼容USB2调试设备功能规范。
- 主控机上必须具有兼容EHCI规范的USB 2.0控制器。
- 目标机上必须具有支持内核调试的USB 2.0控制器。
软件设置
更多关于在目标机上配置启动选项的信息,查看启用调试的启动参数。更多关于如何启动调试任务的信息,查看 附加到目标机(内核模式)。
必须为USB 2.0内核调试安装附加的软件支持才能正常工作。获取关于这些组件的信息,联系usbdbg@microsoft.com。
测试连接
启动调试器之前,必须先确认null-modem连接正常。可以使用超级终端(Hyperterminal)程序来验证连接。
注意 在Windows Server 2003和之后版本的Windows ,超级终端并不是默认安装的组件。可以从Windows光盘上安装它。
要测试null-modem连接,按如下步骤操作:
-
在主控机上,点击开始(Start),指向所有程序(All Programs),指向附件(Accessories),指向通讯(Communications),点击超级终端(HyperTerminal)。
注意 如果超级终端没有安装,可以通过控制面板中的添加/删除程序从Windows安装光盘中安装。
- 在连接描述(Connection Description)对话框,输入新连接的名字。(名字不重要。)
- 在连接到(Connect To)对话框,连接时使用(Connect using)列表,选择当前null-modem电缆在这台机器上连接的COM端口。
- 在下一个窗口,使用默认的COM端口选项。
- 在目标机上重复上面1到4的步骤。
超级终端已经准备好测试了。在主控机上按一些键。如果null-modem电缆安装正确,并且在超级终端中选择的端口号正确,刚才在主控机上按下的字符会在目标机的超级终端窗口中显示出来。
如果没有在目标机中显示,确认是否已经将电缆插入两台机器。确认电缆是null-modem电缆,而非透传串行电缆。
如果电缆正确,可能是COM端口的问题。在目标机的超级终端中创建一个新的连接并选择不同的COM端口。如果问题还未解决,尝试改变主控机上的COM端口。如果问题还存在,则将目标机选择的COM端口改回最早设置的并重置。最终应该会找到正确的配置并测试成功。
如果忘记了哪台机器用哪个端口,在超级终端的文件(File)菜单,点击属性(Properties) 来查看调试任务所应该使用的正确端口配置。