今天又想起来VirtualKD这个东西,试用了一下,真是爽坏了,可能我火星了~~
很久以前就知道小喂有个VmKd工具,使用Vmware的后门指令直接拷贝数据来代替模拟串口,能大大提高调试时的数据传输速度。不过那个对VMware版本的依赖性太强,我的Vmware就没法用,所以很不爽得又放下了,很长一段时间也没关注过。最近翻资料时又找到index09同学的一篇文章,介绍了比Vmkd更好用的VirtualKD,于是马上下回来试用了一下,安装简单多了,使用方便,终于体会到了什么叫做速度,调试时那个嗖嗖的啊,比老爷车一样的串口爽太多了,相信某些同学已经用了很久了。各位如果不嫌我火星的话,我就来详细介绍一下,好东西分享给大家:)
使用场景:如果你正在使用Windbg+Vmware或Windbg+VirtualBox进行内核调试,并且觉得虚拟串口方式过于缓慢,那么这个就是你最需要的东西了!它可以大幅提升调试时数据传输的速度,实在是居家旅行、杀人灭口,必备良药~~(后悔用得太晚了)
这是一个开源项目,工程在sourceforge上:http://sourceforge.net/projects/virtualkd/ 原理和Vmkd差不多,但是使用范围更广,安装更简单了。我简单讲一讲在Vmware上如何使用。一、准备工作从上面的网址下载VirtualKD-2.2.zip(当前版本为2.2),并解压出来。应该会有以下文件:
三、HOST OS中相应部分的安装实际上VirtualKD完全绿色,不需要安装,只要找个合适的地方放好,然后运行vmmon.exe就可以了~~
vmmon.exe会自动找到vmware-vmx.exe并显示在上面,并显示它的一些详细信息。在HOST端我们要做的工作将会非常简单,只需要在Vmware中启动虚拟机的同时启动vmmon.exe就可以了。剩下的vmmon.exe都会替我们做好(动态查找vmware-vmx.exe并进行Patch).
如果你选上了Start debugger automatically那么虚拟机中GuestOS启动的同时vmmon会自动帮你打开调试器,非常方便。 如果你仍然想像以前那样自已通过加参数的方式启动windbg进行双机调试,那么它的参数可以这么写: "C:\Program Files\Debugging Tools for Windows\windbg.exe" -k com:port=\\.\pipe\kd_WinXP,pipe 关键就是这个管道的名称,也就是kd_<你的GuestOS的安装目录>.比如我的XP虚拟机安装目录在E:\Vmware\WinXP,那么管道名称就是kd_WinXP. 实际上也就是虚拟机系统的*.vmx文件所在的文件夹的名字。 更方便一点,直接看vmmon里显示的管道名称就可以了。