阅读:2568回复:13
在读《寒江独钓》的朋友请进!我最近在看《寒江独钓》。但我在配置调试环境时遇到了问题,查了些资料,都不能解决我的问题。因此,向您求助,希望您在有空时,能看看是否能解决我的问题。 我在微软的网站上下载了 VMware 和 WinDbg 的最新的非测试版。 WinDbg 装在调试机上,VMware 里装了 Windows XP。 在虚拟机 Windows XP 中修改了 boot 文件,在最后增加了一行如下: "Microsoft Windows XP Professional debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200 在调试机里,修改了 com1 的传输率为 115200。 在虚拟机 Windows XP 中添加了虚拟串口命名管道 \\.\pipe\com1,与书中一致。 在 WinDbg 的 属性-> 目标 中的后面增加了启动参数 -b -k com:port=\\.\pipe\com1,baud=115200,pipe 我的 WinDbg 的 “目标”中的路径是没有引号的。 当我开始联接时,先启动 WinDbg ,然后启动虚拟机 Windows XP 的调试模式。在 WinDbg 中选 File -> Kernel debug, 在 debug 中选 break。在 WinDbg 的 command kernel 窗口中,显示: Opened \\.\com1 Waiting to reconnect... 在下面没有显示命令行提示符,只显示 Debuggee not connected。过了很久也没变化。 不知是何原因? 如蒙指点,不胜感激! |
|
沙发#
发布于:2009-08-23 09:37
利用 VMWare 和 WinDbg 调试驱动程序
也许很多人早就知道了,但是我不知道,以前一直抓住 Softice大腿不放,但是由于在我的 Hyber Thread 处理器上,Softice 实在是运行的太不理想了。故而只能利用 WinDbg了。不过听 牛人说过,WinDbg 可以把内核的全部结构都显示出来,要比 Softice 强。等我以后测试 看看。 首先,最好先下载 http://msdl.microsoft.com/downlo ... SP2-slp-Symbols.exe 符号表,然后安装到真实系统中。再下载 http://msdl.microsoft.com/downlo ... dbg_x86_6.5.3.8.exe WinDbg 程序的最新版本,同样也安装到真实系统中。 接下来我们要在虚拟机中装系统了,我用的是WinXP SP2。安装完成后修改boot.ini文件。 在里面 [operating systems] 节中加入一行, QUOTE: " multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 " 随后关闭系统。配制虚拟机的硬件,点击 "Edit virtual machine settings",添加一个 Serial Port, 选择"Output to named pipe",然后下一步, 第一框里保持默认的 "\\.\pipe\com_1" 第二框里选"This end is the server." 第三框里选"The other end is an virtual machine." 选中 "Connect at power on" 然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll"。保存退出。 好了,以上就是虚拟机系统要做的全部事情。 在真实系统中,我们要在设备管理器中。找到Com1口,然后再属性页中修改他的速率为 115200。 然后为使用方便,创建一个WinDbg的快捷方式。快捷方式的命令行为 [quote] "C:\Program Files\Debugging Tools for Windows\windbg.exe" -y C:\Windows\Symbols\ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe [quote] 这里面 -y 后面的路径就是我们前面安装符号表的路径。 使用时,首先运行虚拟机系统,到 bootloader 选择进入哪个系统的时候,我们先按一下上下, 将倒计时停止。然后再到真实系统中运行刚才我们创建的 WinDbg 快捷方式。运行完成后再 在虚拟系统中选择带有调试标志的系统即可。此时回到真实系统,稍等一会就可以看到 WinDbg 输出信息告诉我们两个系统已经连接上了。 |
|
板凳#
发布于:2009-08-23 13:23
我还未下载符号表,但这应该不影响 WinDbg 与 VMware 中的系统之间的连接吧?
|
|
地板#
发布于:2009-08-23 22:11
我的快捷方式:"......\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
我先启动VMWARE中的XP,然后打开WINDBG,过一会就连上了,自动跳出int 3中断。没有在菜单中选择任何选项,就是按这个快捷方式打开就可以了。 符号表没关系。 |
|
地下室#
发布于:2009-08-26 14:37
终于解决了!
是书上有个错误: 书上在虚拟机 Windows XP 中修改了 boot 文件,在最后增加了一行如下: "Microsoft Windows XP Professional debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200 这里多了 /noexecute=optin 删掉就行了。 谢谢大家的观注! |
|
总版主
|
5楼#
发布于:2009-09-03 21:02
回 4楼(dazhanhongtu) 的帖子
做这种事情不要这么轻易的下结论能否调试和/noexecute=optin根本就没有关系。 因为我每天使用的调试的虚拟机的XP就是用了/noexecute=optin 你的调试不成功是其他的原因造成了,去掉 /noexecute=optin就好了不过是巧合而已。 |
6楼#
发布于:2009-09-23 23:38
我以前也遇到过这个问题,最后也是去掉了/noexecute=optin才成功了。
|
|
|
7楼#
发布于:2009-09-30 06:51
拿VM还是微软的虚拟机
真实机器连接效果如何 |
|
8楼#
发布于:2009-10-21 16:34
按照我的经验,在Open以后,如果一直是waiting to reconnect.这是只需要按ctrl+break中断系统,就会自动连上的,你试试。
|
|
总版主
|
9楼#
发布于:2009-10-30 14:24
我承认错误了
/noexecute=optin 可能真的是不能加的。 我自己的机器是atom的芯片,所以可能不支持/noexecute,才导致恰好是成功的。 我会在下次改错的时候改正的。 |
10楼#
发布于:2009-11-04 22:49
我的机器有/noexecute=optin,一切正常,CPU是PM1.6G。查了资料,是否有/noexecute=optin选项是一样的效果。
/noexecute=optin,启用DEP(系统数据执行保护) 数据执行保护(DEP)由硬件和软件方法结合。软件DEP必须由操作系统支持,而硬件DEP在应该只包含数据的页表入口中设置了一位来避免被当作代码执行。硬件DEP必须由处理器和操作系统配合支持。如果操作系统支持DEP,但是处理器不支持,则只有软件DEP会被启用。 操作系统支持DEP在Windows Server 2003 SP1、Windows XP SP2、Windows Vista和之后的Windows中都被支持。 /noexecute 参数只在Windows Server 2003 SP1、Windows XP SP2中支持,在Windows Vista中,使用BCDEdit的NX成员。 32位和64位支持/noexecute 只在32位进程上起作用。它启用软件DEP,并且如果硬件支持的话,也启用硬件DEP。 在64位进程中,DEP默认启用并且不能被禁用掉(和/noexecute=alwayson效果一样)。在这些进程上,/noexecute 参数被跳过。在64位操作系统上,/noexecute 只作用于32位进程。 默认值Windows SP2上,安装程序在引导入口中添加/noexecute=optin。 在Windows 2003 SP1上,安装程序在引导入口添加/noexecute=optout。 无论如何,在所有支持DEP的操作系统上,如果没有在引导入口指定/noexecute,则系统默认使用/noexecute=optin 的特性。 |
|
11楼#
发布于:2009-12-08 22:21
/noexecute=optin与/fastdetect我都给保留了,只加了/debug这一项,在虚拟机的配置里面添加了两个串口,第二串口设置为命令管道;先开虚拟机,在开windbg,可以联上
PM740 1.73G + Intel915 + 2 GB RAM, Win7 + VMware Workstation 7, guest os=WinXP SP3 |
|
12楼#
发布于:2009-12-10 14:36
第一框里保持默认的 "\\.\pipe\com_1"
第二框里选"This end is the server." 第三框里选"The other end is an virtual machine." 选中 "Connect at power on" 然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll"。保存退出。 估计你的问题处在这一块,我也配置了,没问题 |
|
13楼#
发布于:2009-12-23 10:30
学习了!!WINDBG和VMWARE的配置了解了,也能正常连接,但里面的一些参数,不太清楚是什么意思,还有就是讨论到的数据执行保护(DEP)由硬件和软件方法就不清楚了。
|
|
|