设为首页 收藏本站
查看: 2143|回复: 0

[经验分享] VirtualKD+Windbg+vmware 极速调试+Windbg下载符号

[复制链接]

尚未签到

发表于 2015-10-8 11:57:02 | 显示全部楼层 |阅读模式
  
  
  ================================VirtualKD+Windbg+vmware=========================================================
  双机调试的时候,不管是Windbg+vmware,还是Windbg+1394,其调试速率都是相对比较低的,有时候执行一条p命令,Windbg的状态都会BUSY..好久...
  
  VirtualKD可以完美的解决这一问题。
  VirtualKD主要是用来提高当使用vmware或virtualBox进行windows内核调试时的速率。以前的双机标准调试方法是利用虚拟COM串口,其速率很低。
  通常,通过虚拟COM串口进行调试包括以下步骤:
  1.windows使用虚拟COM串口和host主机之间进行数据交换;
  2.WinDbg/KD使用VM提供的一个PIPE管道来与目标调试机进行通信。
  这里最弱的连接是虚拟COM串口,其传输速率仅为:115200 baudrate,等效于115200 bit per second,也就是大约10KB/S的传输速率。VirtualKD取代了虚拟COM串口的功能,极大的提高了数据交换速率,可达6MB/S,但是官方给出的用!irpfind命令测试的话,vmware平台可达150KB/S,不过已经比虚拟COM串口快了15倍了。具体的效果只有在调试过程当中,才会体会到 -:) 事实上,VirtualKD的主要原理是,利用KD的扩展DLL功能,并且向虚拟机patch一个进程,二者通过pipe来进行通信。
  使用方法:
  1.配置方法可简单,可复杂。简单的方法有自动化,复杂的方法有手动配置。手动方法分为动态patch和静态patch两种,具体的可参考官网。http://virtualkd.sysprogs.org/
  2.现在只说明下自动安装的情况,目标机为vmware,若是VirtualBox,则稍有改动
  
  下载VirtualKD安装包,解压后,父目录下virtualKD2.2下有一个target目录,将该target目录copy到虚拟机,点击target/vminstall.exe 运行,然后直接安装即可。如图1所示,vminstall.exe会自动检测虚拟机的内核版本,因为我的目标机是wrk 的内核,故显示:wrk debug【VirtualKD】,当然,你也可以将显示的字符串修改后,再点击安装。
DSC0000.gif (图1)

  
当目标机为XP系统的时候,情况如图2所示:
DSC0001.gif (图2)

  
选择install以后,按照提示直接重启。
接着,在host主机端开启vmmon.exe程序即可(记着,vmmon程序要始终开启着),该程序会自动检测到虚拟机当中正在运行的操作系统。简单的设置下windbg的路径和启动方式(自动/手动),那么一切就OK了。虚拟机启动的时候,windbg调试机就自动或手动挂接上了。如图:
  
DSC0002.gif

  
其实配置过程非常简单。这里写的比较啰嗦了,主要是自己第一次配置的时候,没好好读说明书,结果手动配置,浪费了时间;后来选择vminstall.exe自动安装,忘记了设置Debugger path..又浪费了时间去检查。
最终的结论是,使用VirtualKD代替了传统的虚拟COM串口以后,调试速度是飞一般的快。
接受新事物总是好的,认知的过程总是有点小曲折,不过目标对象是多么简单!!!

  
================================Windbg下载符号:=========================================================
  打了补丁后经常出现"Your debugger is not using the correct symbols",使用WINDBG命令下载更新符号文件即可,以下命令不能去掉“.”,打完命令就开始下载了 流量监控可以看到
1: .sympath srv*G:/WinDDK/7600.16385.1/Debuggers/Symbols*http://msdl.microsoft.com/download/symbols
2: !sym noisy
3: .reload
  完成下载后
  lkd>.reload
Connected to Windows 7 7600 x86 compatible target at (Fri Apr 29 21:42:54.477 2011 (UTC + 8:00)), ptr64 FALSE
Loading Kernel Symbols
...............................................................
................................................................
..............................
Loading User Symbols
PEB is paged out (Peb.Ldr = 7ffda00c).  Type ".hh dbgerr001" for details
Loading unloaded module list
..
lkd> !sym noisy
noisy mode - symbol prompts on
lkd> !sym noisy
noisy mode - symbol prompts on
lkd> .sympath srv*G:/WinDDK/7600.16385.1/Debuggers/Symbols*http://msdl.microsoft.com/download/symbols
DBGHELP: Symbol Search Path: srv*g:/winddk/7600.16385.1/debuggers/symbols*http://msdl.microsoft.com/download/symbols
DBGHELP: Symbol Search Path: srv*g:/winddk/7600.16385.1/debuggers/symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: srv*G:/WinDDK/7600.16385.1/Debuggers/Symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: srv*g:/winddk/7600.16385.1/debuggers/symbols*http://msdl.microsoft.com/download/symbols
WARNING: Whitespace at end of path element
  下面在使用命令 dt _eprocess 出来了.本机7600.16695
lkd> dt _eprocess
nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS

  =============================Visualkd+vs2010 调试==============================================
  Visualddk为最新的1.5, http://visualddk.sysprogs.org/,最新版的已经集成了virtualkd.

如果你按照主页上的quickstart一步步去做,会发现,几乎很难一步实现调试驱动.

现把我解决visualddk与vs 2010整合过程中的心得分享如下:

Q1: visualddk安装好后,在调试菜单下没有关于它调试驱动的菜单项.

解决:  在vs 2010工具->选项->环境->外接程序\宏的安全性里将visualddk的add-in的目录添加进去.

Q2: 点击调试菜单下的Driver Launch Settings一直出现throttle 0x10 write to 0x1错误,无法调试.

解决: 正确的步骤是,在VMWare启动时,将界面停留在os 选择这里,然后点击Driver Launch Settings,设置好,然后点击Launch,然后在VMWare里进入系统,经过这样的步骤后,虚拟机系统里的驱动,才可以被正常的调试.


Q3: 调试驱动时,一直出现不能加载pdb文件,错误为类没有注册.

解决: 如果是vs 2008以下的版本,应该不会出现这样的错误,VS 2010会出现,去找一个msdia09.dll,regsvr32一下即可.

Q4: VS调试时,在驱动源码中下的断点无法命中,会提示: 当前不会命中断点,还没有为该文档加载任何符号

解决: visualddk替我们生成的项目里,使用的编译命令是build,我将项目属性里的build改为nmake,然后复制一个makefile到项目文件夹中,即可解决断点无法命中的bug.

这是我早上在解决使用visualddk 1.5和VS 2010调试驱动时出现的各种问题的解决方法,希望能帮助到跟我碰到同样问题的朋友.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-124285-1-1.html 上篇帖子: windows系统中VMware Network Adapter VMnet1和 VMnet8的作用 下篇帖子: VMware下linux与宿主Windows共享文件夹
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表