﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-microbe</title><link>http://www.cppblog.com/microbe/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 20:00:45 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 20:00:45 GMT</pubDate><ttl>60</ttl><item><title>使用WinDbg和虚拟机调试驱动程序v2.0</title><link>http://www.cppblog.com/microbe/archive/2009/08/12/93062.html</link><dc:creator>笨小孩</dc:creator><author>笨小孩</author><pubDate>Wed, 12 Aug 2009 11:24:00 GMT</pubDate><guid>http://www.cppblog.com/microbe/archive/2009/08/12/93062.html</guid><wfw:comment>http://www.cppblog.com/microbe/comments/93062.html</wfw:comment><comments>http://www.cppblog.com/microbe/archive/2009/08/12/93062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/microbe/comments/commentRss/93062.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/microbe/services/trackbacks/93062.html</trackback:ping><description><![CDATA[<pre class="code">v2.0更新：</pre><pre class="code">——对文章作了些文字修改；</pre><pre class="code">——加入了使用VMware虚拟机配置的相关内容，而不是只根据个人喜好只写的Virtual PC的配置；</pre><pre class="code">——加入了虚拟机操作系统为Vista32的配置情况，Vista64后续有了调试经验后再加上；</pre>
<p>软件下载：</p>
<p>WinDbg：<a title="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">http://www.microsoft.com/whdc/devtools/debugging/default.mspx</a></p>
<p>VirtualPC:<a title="http://www.microsoft.com/downloadS/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&amp;displaylang=en" href="http://www.microsoft.com/downloadS/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&amp;displaylang=en">http://www.microsoft.com/downloadS/details.aspx?FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6&amp;displaylang=en</a></p>
<p>VMware: <a href="http://www.google.cn/search?keyword=&quot;VMware Cracked Download :)&quot;">www.google.cn/search?keyword="VMware Cracked Download :)"</a></p>
<p>正文：</p>
<p>在开发Windows驱动程序的时候，是需要使用双机调试的。而使用虚拟机调试，则至少可以获得以下好处：</p>
<ul>
<li>不需要另外一台额外的物理机，省钱才是King Road！ 
<li>调试驱动需要频繁地重启被调试机器，用虚拟机可以节省好多时间，so，省时！ 
<li>驱动程序的调试和测试需要多样化的操作系统环境和软件环境，用虚拟机做多个操作系统vhd的备份非常easy，而物理机，就只能装多个操作系统或者作多个ghost了（省力）。</li></ul>
<p>有这样省钱省时又省力的好事，当然不能错过了。当然，有时因为虚拟机跟物理机的差异，有些问题必须要在物理机上调试，这时当然是省不了的了（话说开发Windows驱动也从来不是什么省时省心的好事儿）。但是，绝大多数时候，你还是可以使用虚拟机调试的。</p>
<p>使用虚拟机调试的大致示意图如下：</p>
<p><a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/windbg_vpc_2.png"><img title="windbg_vpc" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="206" alt="windbg_vpc" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/windbg_vpc_thumb.png" width="465" border="0"></a>有了感性的认识之后，下面讲解具体的配置过程： 
<p>首先，需要在物理机上安装虚拟机，我安装的是Virtual PC 2007，当然VMware也可以，仅仅作为一个调试的载体来说，VirtualPC的好处是简单易用。然后需要在你的虚拟机上安装好操作系统，操作系统的版本取决于你要在哪一个操作系统上调试你的驱动程序，可以直接去网上download别人已经安装好的vhd文件（Virtual Hard Disk file），比如说微软的网站上，一般会提供最新操作系统的体验版vhd，vhd文件时VMware和VirtualPC通用的。虚拟机以及虚拟机操作系统的安装过程不在此详述，网络上有很详细的资料。 
<p>WinDbg更新的也很快，一般来说推荐用最新的，但是有时候最新的会有些小问题，比如说刚刚最新的版本（6.10）,在使用其Local Kernel Debugging的功能时，必须开启本机的"/debug"启动参数。 
<p>软件安装完成后，剩下的就是配置了，首先是对虚拟机配置，然后是物理机，物理机和虚拟机是通过命名管道相连接的，所以首先要配置虚拟机的命名管道。 
<p><font color="#ff0000">【虚拟机】命名管道配置</font> 
<p>在Virtual PC 中，命名管道的配置如下面的图所示： 
<p><a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/wps_clip_image-0%5B23%5D.png"><img title="wps_clip_image-0[23]" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="273" alt="wps_clip_image-0[23]" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/wps_clip_image-0%5B23%5D_thumb.png" width="381" border="0"></a> 
<p><a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/wps_clip_image1.png"><img title="wps_clip_image1" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="421" alt="wps_clip_image1" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/wps_clip_image1_thumb.png" width="589" border="0"></a> 
<p>VMware中，配置命名管道的方法如下：（还是截图）</p>
<p><a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/vmware_2.png"><img title="vmware" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="467" alt="vmware" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/vmware_thumb.png" width="677" border="0"></a>&nbsp;<a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/namepipe_2.png"><img title="namepipe" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="230" alt="namepipe" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/namepipe_thumb.png" width="454" border="0"></a></p>
<p>&nbsp;<a href="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/namepipe2_2.png"><img title="namepipe2" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="462" alt="namepipe2" src="http://www.cppblog.com/images/cppblog_com/microbe/WindowsLiveWriter/41351fcafeb8_E32A/namepipe2_thumb.png" width="453" border="0"></a> （未完待续）</p>
<p>参考资料：</p>
<p>Debugging Help（Debugging Tools for Windows）</p><img src ="http://www.cppblog.com/microbe/aggbug/93062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/microbe/" target="_blank">笨小孩</a> 2009-08-12 19:24 <a href="http://www.cppblog.com/microbe/archive/2009/08/12/93062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>