解决Windows 7下编写驱动时DbgPrint / KDPrint不能打印的问题
造成这个问题的原因主要是因为Windows 7为了避免不必要的系统开销而默认关闭了调试信息过滤,因此导致我们无法正常打印出调试字符串。开启的方法非常简单,我们只需要操作注册表就可以建立一个调试打印过滤器,将以下内容保存为*.reg文件后,双击执行后即可完成设置工作。
Windows Registry Editor Version 5.00
[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager \Debug Print Filter ][ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager \Debug Print Filter ]"DEFAULT" = dword : 0000000f
解决WinDBG符号(Symbol)加载不正常的情况
我们都知道WinDBG在使用之前需要配置Symbol信息,这样你在查看系统结构时,会得到非常详尽的信息,我们一般情况下会这样配置。
1. 运行WinDBG后,按快捷键【Ctrl】+【S】调出符号信息配置对话框(或依次点击菜单栏上的“File”>“Symbol File Path...”);
2. 输入如下配置信息:C:\Symbols;SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols ;
至此我们已经完成了对WinDBG的符号配置问题,但是有时我们这样配置完成后由于某种原因并未生效,如果你遇到这样的问题,那么你或许可以试试如下方法。
1. 输入命令设置WinDBG符号;
kd>.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
2. 用!sym noisy命令使得WinDBG在获得符号的时候取得更多的信息,然后使用!lmi命令让WinDBG查看Windows的ntoskrnl模块,最后然后使用.reload /f尝试获取ntoskrnl的符号。
kd >! sym noisykd >! lmikd >. reload / f
[注意:以上的“kd>”是提示符,不要将其误当成命令中的一部分]
现在,你可以尝试输入一下例如“dt _teb”等命令查看是否成功了。
如果仍然不成功,你可以检查一下你是否安装了Symbol,如果安装了,则检查一下Symbol的版本是否正确(与当前操作系统版本比对),如果版本不正确,请卸载此Symbol,并重新安装正确版本的Symbol,或干脆不安装。