无法使用串行电缆调试内核驱动程序

时间:2009-11-14 20:13:56

标签: windows debugging serial-port kernel windbg

我是司机的新手。我试图使用串行COM端口调试内核驱动程序但没有成功。有人可以告诉我如何解决问题的正确方向吗?

我在kd控制台上看到以下消息。

错误:DavReadRegistryValues / RegQueryValueExW(4)。 WStatus = 127
错误:DavReadRegistryValues / RegQueryValueExW(5)。 WStatus = 127
错误:DavReadRegistryValues / RegQueryValueExW(6)。 WStatus = 127

此时,我按下了Ctl ^ D和kd控制台,我看到了 阅读:超时。
READ:等待类型7包
阅读:超时。
READ:等待类型7包
阅读:超时。

编辑:WinDbg解决了这个问题。在Tar​​get系统完全启动之前,我将波特率更改为115200并插入break(Ctr ^ Break)。我现在能够调试代码。如果我在目标系统完全启动后插入break,那么我无法调试。我不知道确切的原因,但对目前的情况感到满意。

Here are the things I have done

1) Prepared Target system for debug mode by editing the boot.ini file. Added     “/debugport=com1 /baudrate=57600”  to boot.ini

2) On Host system, started kd.exe and seeing the following output

C:\Program Files\Debugging Tools for Windows>kd.exe -k com:port=1,baud=57600
Microsoft (R) Windows Debugger  Version 6.6.0007.5
Copyright (c) Microsoft Corporation. All rights reserved.
Opened \\.\com1
Waiting to reconnect...

3) Rebooted Target system, system boots slowly than normal boot and I am seeing some     messages <<below>> on Host system console

4) At this time, If I press Ctl-C on KD console then Target system freezes (hangs)         and proceeds if I enter "g" at kd prompt.  This means that Target system     is going to debug mode

5) However After some time I am seeing the following message on the host machine console

ERROR: DavReadRegistryValues/RegQueryValueExW(4). WStatus = 127  
ERROR: DavReadRegistryValues/RegQueryValueExW(5). WStatus = 127  
ERROR: DavReadRegistryValues/RegQueryValueExW(6). WStatus = 127  

After the above message there are no messages appearing on kd console.

I searched internet for "ERROR: DavReadRegistryValues/RegQueryValueExW(6). WStatus =     127" but didn't get proper reason for it.

I pressed Ctl^D and kd console and I am seeing 
READ: Timeout.  
READ: Wait for type 7 packet  
READ: Timeout.  
READ: Wait for type 7 packet  
READ: Timeout.  

I have tried above steps with following options ..but no luck

I disabled firewall & antivirus software on both Host and Target systems. 
I unplugged and re-plugged serial cable connection between each trail
I have logged-in with Domain account local account with Admin rights 


Can someone show some light on how to proceed? Both systems are running on XP 32bit     SP3 OS.

由于 景

2 个答案:

答案 0 :(得分:2)

您确定串口连接良好吗?

电缆必须是零调制解调器电缆 - 您应该使用终端程序验证这一点(在目标上未启用内核调试)。在目标计算机和主机上运行程序(超级终端或其他)(记住,就像我在内核调试之前说的那样,不能在目标上启用该端口或者无法打开端口)。

你可以在这里找到一些指向免费终端程序的链接(我不认为微软会提供自Vista以来的超级终端):http://www.lvr.com/serport.htm#software

在一台机器上键入一些字符,并确保它们显示在另一侧。在另一台机器上做同样的事情。

如果你不能这样做,那么就没有串行连接,你必须得到零调制解调器电缆或适配器。在你做到这一点之前,尝试让KD在这个连接上工作没有意义。

另外,请记住,目标上的内核调试使用的COM端口必须是标准的8250系列UART(现在通常是16550或更好,通常烘焙到主板芯片组中)。它不能是USB串口连接器(虽然在主机端可以正常工作,因为在主机上kd.exe是常规的Win32程序)。

编辑:


如果这不是串行连接问题,则问题可能是您的目标不支持使用boot.ini进行配置。自Vista以来,已使用“引导配置数据库”(BCD)指定引导参数,该引导配置数据库使用bcdedit.exe之类的程序进行操作。不幸的是,使用BCDedit配置系统要比编辑boot.ini之类的简单文本文件复杂得多。

您应该阅读调试器帮助文件部分“在目标计算机上配置软件”;特别是“使用引导参数”部分。有关于如何使用bcdedit在Vista及更高版本系统上启用调试的详细信息。

答案 1 :(得分:0)

您可以测试另一件事,看看调试是否在目标上工作是在目标上调用kd -kl - 如果它告诉您调试没有启用,那么您还没有设置正确启动boot.ini。