本文主要记录个人安装VMware+Windgb+Win7内核驱动调试的笔记。
一、安装环境
- 主机:Windows Vista Bussiness
- 虚拟机:VMware 7
- GUestOS: Win7
- Windbg: 6.11
二、虚拟机配置
- 打开相应 vmware 虚拟机上的 “Virtaul Machine Settings“
- “Hardware ”选项中 ----> 点击“Add" 添加一个串口设备 SeriallPort .
- "Next",在 "Serial Port" 里选中 “Output to named pipe"
- "next",然后如下设置:
- 确定之后,回到如下界面,在右脚"Virtual Machine Settings" 页面时,在“I/O Mode” 里选中“Yield CPU on poll“
- Ok之后就设定完毕了。
三、Windbg设置
下载地址: Windbg
安装之后,设置一个桌面快捷方式,然后,右键->属性,在Target中的引号后面添加如下:-b -k com:pipe,port=\\.\pipe\com_1,resets=0
或者是: -b -k com:port=\\.\pipe\com_1,baud=115200,pipe 【二者似乎皆可】
四、GuestOS设置
Vista和XP不同, 没有boot.ini文件, 需要用bcdedit进行启动设置。
- 在administrator权限下, 进入command line模式, 键入bcdedit命令, 会出现以下界面:
- 然后, 设置端口COM1, baudrate为115200 (除COM1外, 也可以用1394或USB. 1394用起来比COM口快多了, 当然前提是你需要有1394卡及其驱动. 很恶心的是Vista不再支持1394的文件传输协议, 但是用windbg双机调试还是可以的)
命令为:
bcdedit /dbgsettings {serial [baudrate:value][debugport:value] | 1394 [channel:value] | usb }
- 接着, 我们需要复制一个开机选项, 以进入OS的debug模式
命令为:
bcdedit /copy {current} /d DebugEnty
DebugPoint为选项名称, 名字可以自己定义. 然后复制得到的ID号.
- 接着增加一个新的选项到引导菜单
bcdedit /displayorder {current} {ID}
这里的{ID}的ID值是刚生成的ID值.
- 激活DEBUG : bcdedit /debug {ID} ON
这里的{ID} 的ID值还是刚才的ID值.
- 命令执行成功后, 重新启动机器
- (1-6 或者以更简单的图形界面设置:在msconfig界面中,选Boot,再选Advanced options,在选择Debug、Debug port、Baud rate都打上钩。)
- 选择DebugEntry[debug]作为等入口。启动后,打开windbg.可以正常工作啦。
看到有人介绍修改注册表的办法来解决
内核输出的问题。具体办法是在注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/中
新建key,名字为Debug Print Filter ,然后在此key下新建一个DWORD value ,名字为DEFAULT,然后设置值为0x00000008,
重启电脑后会生效。
重启电脑后发现仍然没打印,唉,不会是哪里漏了吧。 经过仔细的排查,发现是Debug Print Filter这个key有问题,原因是之前改名字时我是直接复制网上的,可能有不可见字符也被复制进去了(看来还是不能偷赖啊!)。修改后问题解决。
(从网上找了一个工具(SetDbgPrintFiltering.exe)设置内核打印级别,其原理和前面设置注册表一样)