dazhanhongtu
驱动牛犊
驱动牛犊
  • 注册日期2009-08-22
  • 最后登录2009-09-01
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望51点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2568回复:13

在读《寒江独钓》的朋友请进!

楼主#
更多 发布于:2009-08-22 21:46


我最近在看《寒江独钓》。但我在配置调试环境时遇到了问题,查了些资料,都不能解决我的问题。因此,向您求助,希望您在有空时,能看看是否能解决我的问题。


我在微软的网站上下载了 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。过了很久也没变化。


不知是何原因?

如蒙指点,不胜感激!
skymelai
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2010-01-29
  • 粉丝1
  • 关注0
  • 积分81分
  • 威望711点
  • 贡献值3点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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 输出信息告诉我们两个系统已经连接上了。
dazhanhongtu
驱动牛犊
驱动牛犊
  • 注册日期2009-08-22
  • 最后登录2009-09-01
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望51点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-08-23 13:23
我还未下载符号表,但这应该不影响 WinDbg 与 VMware 中的系统之间的连接吧?
bangzhu
驱动牛犊
驱动牛犊
  • 注册日期2009-03-01
  • 最后登录2009-11-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-08-23 22:11
我的快捷方式:"......\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

我先启动VMWARE中的XP,然后打开WINDBG,过一会就连上了,自动跳出int 3中断。没有在菜单中选择任何选项,就是按这个快捷方式打开就可以了。

符号表没关系。
dazhanhongtu
驱动牛犊
驱动牛犊
  • 注册日期2009-08-22
  • 最后登录2009-09-01
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望51点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-08-26 14:37
终于解决了!

是书上有个错误:

书上在虚拟机  Windows XP 中修改了 boot 文件,在最后增加了一行如下:

"Microsoft Windows XP Professional debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

这里多了 /noexecute=optin

删掉就行了。


谢谢大家的观注!
XiangXiangRen
总版主
总版主
  • 注册日期2003-02-22
  • 最后登录2015-09-01
  • 粉丝13
  • 关注0
  • 积分1042分
  • 威望472点
  • 贡献值1点
  • 好评度145点
  • 原创分13分
  • 专家分1分
5楼#
发布于:2009-09-03 21:02
回 4楼(dazhanhongtu) 的帖子
做这种事情不要这么轻易的下结论
能否调试和/noexecute=optin根本就没有关系。
因为我每天使用的调试的虚拟机的XP就是用了/noexecute=optin
你的调试不成功是其他的原因造成了,去掉 /noexecute=optin就好了不过是巧合而已。
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2009-09-23 23:38
我以前也遇到过这个问题,最后也是去掉了/noexecute=optin才成功了。
作一名真实,诚实,优秀的科技工作者!
wotacid
驱动牛犊
驱动牛犊
  • 注册日期2009-06-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2009-09-30 06:51
拿VM还是微软的虚拟机
真实机器连接效果如何
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
8楼#
发布于:2009-10-21 16:34
按照我的经验,在Open以后,如果一直是waiting to reconnect.这是只需要按ctrl+break中断系统,就会自动连上的,你试试。
XiangXiangRen
总版主
总版主
  • 注册日期2003-02-22
  • 最后登录2015-09-01
  • 粉丝13
  • 关注0
  • 积分1042分
  • 威望472点
  • 贡献值1点
  • 好评度145点
  • 原创分13分
  • 专家分1分
9楼#
发布于:2009-10-30 14:24
我承认错误了
/noexecute=optin 可能真的是不能加的。
我自己的机器是atom的芯片,所以可能不支持/noexecute,才导致恰好是成功的。
我会在下次改错的时候改正的。
kobeast
驱动牛犊
驱动牛犊
  • 注册日期2005-12-04
  • 最后登录2013-05-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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 的特性。
philoman
驱动牛犊
驱动牛犊
  • 注册日期2005-05-29
  • 最后登录2011-07-13
  • 粉丝0
  • 关注0
  • 积分73分
  • 威望235点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
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
恋爱的犀牛
驱动牛犊
驱动牛犊
  • 注册日期2009-12-09
  • 最后登录2010-08-01
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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"。保存退出。

估计你的问题处在这一块,我也配置了,没问题
qixiqizi
驱动牛犊
驱动牛犊
  • 注册日期2009-10-26
  • 最后登录2010-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2009-12-23 10:30
学习了!!WINDBG和VMWARE的配置了解了,也能正常连接,但里面的一些参数,不太清楚是什么意思,还有就是讨论到的数据执行保护(DEP)由硬件和软件方法就不清楚了。
疯狂学习,潜心研究、、、、、、
游客

返回顶部